【发布时间】:2018-04-01 12:39:58
【问题描述】:
public class DecoratorPatternDemo {
public static void main(String[] args) {
Shape circle = new Circle();
Shape redCircle = new RedShapeDecorator(new Circle());
Shape redRectangle = new RedShapeDecorator(new Rectangle());
System.out.println("Circle with normal border");
circle.draw();
System.out.println("\nCircle of red border");
redCircle.draw();
System.out.println("\nRectangle of red border");
redRectangle.draw();
}
}
谁能告诉我创建一个引用类型为Shape 的RedShapeDecorator 实例有什么好处? (我可以理解Shape circle = new Circle() 的原因,因为这是多态性)。但不是RedShapeDecorator。如果我这样做是一样的吗
RedShapeDecorator redCircle = new RedShapeDecorator(new Circle());
而不是
形状 redCircle = new RedShapeDecorator(new Circle()); .
谢谢。
【问题讨论】:
-
如果你只需要一个
Shape,因为你只调用draw()方法,那么使用RedShapeDecorator redCircle将是太多的实现细节。 -
i can understand the reason with Shape circle = new Circle() because this is polymorphism。RedShapeDecorator也是多态性。这取决于您要公开多少细节,或者说要根据所使用的接口退出合同,或者只是直接想使用具体类来使用某些实用程序...... -
是的,我知道它是多态性。但我的意思是我可以理解使用多态与圆形的原因..但为什么使用多态与 redDecortor :) ..任何原因?
-
你的显示器右下角应该有或曾经有一只鸭子,向它解释使用多态与圆的原因,看看是否同样的原因适用于装饰器。
标签: java design-patterns decorator