任何人都可以为我详细说明 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/