【发布时间】:2019-07-23 05:48:08
【问题描述】:
我有一个小项目,我将一个类的对象与另一个类包装在一起。 Decorated 类实现了一个接口,但 Decorator 类没有实现它。我很好奇它仍然是装饰器模式还是其他模式,并且“装饰器”类在我的项目中应该称为 Wrapper 而不是 Decorator。
我检查了 iluwatar github 存储库 (https://github.com/iluwatar/java-design-patterns/tree/master/decorator/src/main/java/com/iluwatar/decorator) 和 tutorialspoint (https://www.tutorialspoint.com/design_pattern/decorator_pattern)。 例如在 iluwatar 有: 装饰师:
public class ClubbedTroll implements Troll
装饰:
public class SimpleTroll implements Troll
在这两种情况下(iluwatar 和 tutorialspoint),装饰器和装饰类都有共同的接口实现。这是否意味着必须将其称为装饰器设计模式?
【问题讨论】:
-
我不明白试图找出您对(我猜)主要是人为问题的解决方案是否必须坚持某种设计模式 - 设计模式是最佳实践解决方案 用于常见问题并且没有自己的价值,所以如果您问我们装饰器是否可以很好地解决您的问题,我们可以提供帮助,但现在它没有那么有意义。
-
public class ClubbedTroll extends SimpleTroll... -
如果“装饰器”没有实现被装饰的接口,它就不是装饰器,因为它不能像被装饰的类型那样工作。那么它只是一个包装器。装饰器 IS 是具有附加功能的装饰类型。 装饰器和被装饰器必须是同一类型(共享同一接口或基类)。试试this。
标签: java design-patterns