c++ - 桥接模式与装饰器模式

标签 c++ design-patterns decorator bridge

任何人都可以为我详细说明 Bridge 设计模式和 Decorator 模式。我发现它在某些方面很相似。不知道怎么区分?

我的理解是,在Bridge中,实现与接口(interface)分离,一般只能应用一个实现。 Decorator 是一种包装器,你可以包装尽可能多的东西。

例如,

桥梁模式

class Cellphone {
private:
Impl* m_OS;         // a cellphone can have different OS

}

装饰器模式

class Shirt {
private:
Person * m_p;           //put a shirt on the person;

}

最佳答案

Decorator 应该与您正在装饰的对象的界面相匹配。也就是说,它具有相同的方法,并允许在进入途中拦截参数,并在出路时拦截结果。您可以使用它为装饰对象提供额外的行为,同时保持相同的接口(interface)/契约。请注意,装饰器的接口(interface)可以提供附加功能来创建更有用的对象。

Bridge 没有这样的限制。面向客户端的界面可能不同于提供实现的底层组件,因此它在客户端界面和实际实现(可能对客户端不友好,可能会发生变化等)之间架起桥梁。 )

关于c++ - 桥接模式与装饰器模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2254536/

相关文章:

c++ - 在C++中将不同的类按层次结构放在一个容器中

Python装饰器: TypeError: function takes 1 positional argument but 2 were given

c# - 声明静态成员的类装饰器(例如,对于 log4net)?

c++ - 指向类方法的指针

c++ - 具有不同返回类型的 Eigen 系数明智运算符

php - 我应该如何处理预期的错误?例如。 "username already exists"

c++ - 类设计: how to add sequencing or alternating logic to API

python - 实例化后装饰类及其成员

c++ - socket编程tcp发送文件

c++ - 将整个二进制文件读入缓冲区,然后以特定格式解析它