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的基本概念之一。然而,多态性是实现许多设计模式的基础之一
      • 多态性在语言层面得到支持;它不是你可以编码到你的程序中的东西

      在我看来,设计模式是使用OOP原则的良好实践/方法。根据特定的需求,它使用OOP原则来实现很多意义。只要一分钱。这只是一种多态性。针对特定原因而设计的模式。比如单例模式。它将只管理整个应用程序的单个对象。这是你的代码的特殊原因吗。模式不是java。模式是使代码得以维护的方法。这意味着您可以使用任何语言来实现它。别担心,这都是虚构的,很糟糕。在我看来,设计模式是使用OOP原则的良好实践/方法。根据特定的需求,它使用OOP原则来实现很多意义。只要一分钱。这只是一种多态性。针对特定原因而设计的模式。比如单例模式。它将只管理整个应用程序的单个对象。这是你的代码的特殊原因吗。模式不是java。模式是使代码得以维护的方法。这意味着您可以使用任何语言来实现它。别担心,这都是虚构的词,很糟糕。第三点非常好,正如您正确提到的实现许多设计模式的基础。第三点非常好,正如您正确提到的实现许多设计模式的基础。