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

时间:2013-03-06 05:25:10

标签: java design-patterns interface polymorphism abstract-class

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

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.

}

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

2 个答案:

答案 0 :(得分:1)

  • 在我看来,设计模式是一种经过验证的方式编写代码来解决问题。根据您使用的编程语言,您使用给定设计模式的方式可能会有很大差异。
  • 语言级别很少支持设计模式(尽管像Groovy这样的新语言在语言级别实现了特定的设计模式;例如,Groovy中使用称为“闭包”的语言级功能提供了“方法对象”模式“)。
  • 您给出的代码是多态性的一个例子,它是OOP的基本概念之一。然而,多态性是实现许多设计模式的基础之一。
  • 语言层面支持多态性;它不是你可以编入你的程序的东西。

答案 1 :(得分:0)

1998年写了一本Java书,仍然可用at Amazon,在第4章中,将“Inteface”,“Abstract Superclass”和其他内容称为“基本设计模式”。

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

简短的回答是:人们会给你两个答案,但根据我的经验,大多数人会拒绝。