设计模式 - 适配器模式与装饰模式?

时间:2017-03-11 15:40:05

标签: design-patterns

我一直在阅读设计模式,这让我很好奇:

Decorator Pattern表示包装原始对象并在包装器对象中添加其他功能。从结构上来说 - Wrappers遵循装饰模式。

适配器模式表示通过创建一个对象并向其添加功能来更改一个对象。这些功能与原始对象的功能不匹配,因此我们必须修改它们,但我们也可能添加我们自己的额外方法,这些方法不是原始对象的一部分。

在这方面,Adapter和Decorator设计模式有什么区别?

2 个答案:

答案 0 :(得分:13)

Decorator,动态地将附加职责附加到对象。例如,在咖啡中加糖。

Adapter,将现有类的接口调整为另一个接口。例如电子适配器。

答案 1 :(得分:9)

从这个答案:How do the Proxy, Decorator, Adapter, and Bridge Patterns differ?

Decorator也被称为“智能代理”。当您想要向对象添加功能时使用此功能,但不能通过扩展该对象的类型来使用。这允许您在运行时执行此操作。

当您具有抽象接口时,使用适配器,并且您希望将该接口映射到具有类似功能角色但具有不同接口的另一个对象。

主要区别是:

Decorator用于在运行时装饰单个对象。适配器用于向类添加功能,因此也为其所有对象添加功能。