如何区分设计模式和标准多态性



例如,我有一个接口和一堆类,如下所示

public interface Drawable{
  void draw(); // draws something on screen for example.
}
abstract class Shape implements Drawable {...}
class Circle extends Shape{...} // assume that draw() is implemented in both classes.
class Square extends Shape{...} // ...

现在,如果我有一个主类并执行以下操作:

class Main{
Shape s1 = new Circle();
s1.draw(); // assume that this will draw a circle.
s1 = new Square();
s1.draw(); //assume that this will draw a square.
}

我在这里使用设计模式吗?或者这只是标准的多态性?如果这是一种设计模式,那么它叫什么?

  • 在我看来,设计模式是一种久经考验的方式编写代码来解决问题。根据所使用的编程语言,采用给定设计模式的方式可能会有很大的不同。
  • 设计模式很少在语言级别得到支持(尽管像Groovy这样的新语言确实在语言级别实现了特定的设计模式;例如,"方法对象"模式在Groovy中是通过一个叫做"闭包"的语言级特性提供的)。
  • 您给出的代码是多态性的一个示例,多态性是OOP的基本概念之一。多态性是实现许多设计模式的基础之一。
  • 在语言级别支持多态性;它不是你可以写进你的程序的东西。

有一本写于1998年的Java书,在亚马逊上仍然可以买到,在第4章中,把"接口"、"抽象超类"和其他东西称为"基本设计模式"。

这种说法有些争议,因为许多人会说这些只是基本机制,而不是"设计模式"。

简短的回答是:人们会给你两个答案,尽管以我的经验,大多数人会说不。

最新更新