Java 如何区分设计模式和标准多态性
例如,我有一个接口和一堆类,如下所示Java 如何区分设计模式和标准多态性,java,design-patterns,interface,polymorphism,abstract-class,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 Squar
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.
}
我在这里使用设计模式?或者这只是标准多态性?如果这是一种设计模式,那么它叫什么 有一本1998年编写的Java书籍,在第4章中仍然可用,它将“接口”、“抽象超类”和其他东西称为“基本设计模式” 这种说法有点争议,因为许多人会说这些只是基本机制,而不是“设计模式”
简短的回答是:人们会给你们两个答案,但根据我的经验,大多数人都会说不。1998年有一本Java书籍,在第4章中仍然可用,称为“接口”、“抽象超类”和其他“基本设计模式” 这种说法有点争议,因为许多人会说这些只是基本机制,而不是“设计模式” 简短的回答是:人们会给你们两个答案,尽管根据我的经验,大多数人会说不。
- 在我看来,设计模式是一种经过尝试和测试的方式,即编写代码来解决问题。根据所使用的编程语言,使用给定设计模式的方式可能会有显著差异
- 设计模式很少在语言级别得到支持(尽管像Groovy这样的较新语言确实在语言级别实现了特定的设计模式;例如,“方法对象”模式是在Groovy中使用称为“闭包”的语言级别特性提供的)
- 您给出的代码是多态性的一个示例,多态性是OOP的基本概念之一。然而,多态性是实现许多设计模式的基础之一
- 多态性在语言层面得到支持;它不是你可以编码到你的程序中的东西
- 在我看来,设计模式是一种经过尝试和测试的方式,即编写代码来解决问题。根据所使用的编程语言,使用给定设计模式的方式可能会有显著差异
- 设计模式很少在语言级别得到支持(尽管像Groovy这样的较新语言确实在语言级别实现了特定的设计模式;例如,“方法对象”模式是在Groovy中使用称为“闭包”的语言级别特性提供的)
- 您给出的代码是多态性的一个示例,多态性是OOP的基本概念之一。然而,多态性是实现许多设计模式的基础之一
- 多态性在语言层面得到支持;它不是你可以编码到你的程序中的东西