Bridge - 桥接模式

定义
将一个类的接口与实现分离,使之可以独立的变化。

案例
要定义跨平台的窗口Window,在不同的平台上它有不同的实现AWindow,BWindow等等,根据平台的数目就必须实现特定数目个子类,但是用户在使用的不会关心使用的是什么平台,这时 使用桥接模式可以使之变得简单:


Window类提供接口给用户,而它的实现由WindowImpl提供,可以减少代码的耦合:
   
   
  1. class Window {
  2. public:
  3. void drawIcon();
  4. void drawText();
  5. private:
  6. WindowImpl* m_impl;
  7. }
  8. void Window::drawIcon() {
  9. m_impl->drawIcon();
  10. }
  11. void Window::drawText() {
  12. m_impl->drawText();
  13. }
  14. class WindowImpl {
  15. public:
  16. virtual void drawText() = 0;
  17. virtual void drawIcon() = 0;
  18. }
  19. class AWindowImpl : public WindowImpl {
  20. public:
  21. virtual void drawIcon();
  22. virtual void drawText();
  23. }
  24. class BWindowImpl : public WindowImpl {
  25. public:
  26. virtual void drawIcon();
  27. virtual void drawText();
  28. }
桥接模式还可以和抽象工厂模式很好的结合在一起使用来决定使用哪一个Impl:
   
   
  1. Window::Window() {
  2. m_impl = WindowFactory::instance()->createImpl();
  3. }
优点
  • 分离接口和它的实现,实现改变了与之相关的模块不用再编译
  • 提高可扩充性,创建合适的impl
  • 实现细节对用户透明,用户只能看到能调用的公用函数
适用性
  • 不希望实现与接口有捆绑关系
  • 不改变接口的情况下需要扩充,而不引起用户代码的重编译
  • 不希望用户了解实现细节
相关模式
可以和抽象工厂模式一起使用。
适配器模式是使两个不相关的类协同工作,通常是系统设计完成后才使用,桥接模式在系统开始的时候就使用,它是使接口和实现相分离。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值