[置顶] 欢迎您。今天是2022年10月01日。

多态性模式(Polymorphism)是GRASP扩展模式的一种,它通过多态操作把基于类型的可变行为的定义职责分配给行为发生的类。

问题:

根据类型(类)的不同而发生变化的行为的定义职责,应该分配给谁?

问题比较抽象难懂,我们通过举例来解释一下。

比如物体的移动行为,不同的物体有不同的移动方法,比方说汽车与人的移动方法不一样。

在面向对象设计中,怎么样分配此类行为的定义职责呢?或者说,此类行为应该在哪定义怎么定义呢?

Polymorphism模式所提倡的解决方案:

Polymorphism模式提倡通过多态操作把基于类型的可变行为的定义职责分配给行为发生的类。

又是一个抽象的概念。我们来解释一下。

多态性是面向对象的重要概念之一。所谓多态性,简单地说,就是具有同一接口的不同对象对相同的消息具有不同的行为。或者说同一消息作用于不同的对象,而产生不同的结果。

传统的设计方法,当类型发生变化时,利用条件判断语句对类型进行判断,然后执行不同的行为。

Polymorphism模式把各变化的“行为”定义职责分别分配给具有相同操作行为界面的通用接口的实现子类,利用多态性适应行为的可变性。

应用Polymorphism模式的好处:

  1. 避免重复代码
  2. 避免重复的分歧条件
  3. 易扩展。只要实现了统一的通用接口,便可实现行为的扩展

Polymorphism模式的应用例

上面的例子:物体的移动行为,应用Polymorphism设计模式,它的类图便是:

如果我们需要扩展“移动”行为,只需简单地创建一个实现IRunner接口的类。

您可能也喜欢

GRASP是General Responsibility Assignment Software patterns(通用职责分配软件模式)的简称,它的核心思想是“职责分配(Responsibility Assignment)”。GRASP提出了几个基本原则,用来解决面向对象设计的一些问题。

信息专家模式(Information Expert)是GRASP模式中解决类的职责分配问题的最基本的模式。

创建者模式(Creator)是GRASP模式中解决类的实例的创建职责问题的模式。

二维码
摄像头