博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式(5) - Bridge桥接模式
阅读量:4071 次
发布时间:2019-05-25

本文共 831 字,大约阅读时间需要 2 分钟。

目录


1.意图

  将一个抽象类从它的具体实现中解耦出来,这样这两个类可以独立的变化,互不影响。

2.UML类图

3.GOF角色说明

Abstraction(抽象类)

定义抽象类的接口。维护一个指向Implementor类型对象的指针。
RefinedAbstraction
扩充由Abstraction定义的接口。
Implementor
定义实现类的接口。该接口不一定要与Abstraction的接口完全一致:事实上这两个接口可以完全不同。一般来讲,Implementor接口仅提供基本操作,而Abstraction则定义了基于这些操作的较高层次的操作。
ConcreteImplementor
实现Implementor接口并定义它的具体实现。

4.代码实现

#include
using namespace std;//Implementorclass DrawImplementor {public: virtual void drawSquare(double) = 0; virtual ~DrawImplementor() { }};// ConcreteImplementor Aclass DrawWithBrush: public DrawImplementor {public: DrawWithBrush() { } virtual ~DrawWithBrush() { } void drawSquare(double side) { cout<<"DrawWithBrush->square with side="<
<
square with side="<
<

  运行结果:

  DrawWithBrush->square with side=10
  DrawWithPencil->square with side=20

你可能感兴趣的文章
容易忽视但是功能灰常强大的Java API
查看>>
转来的一篇关于hibernate的查询资料,很不错
查看>>
httpclient3.1下的请求头和params
查看>>
java中的image 的一些概念
查看>>
easyui中不显示出来的一个问题
查看>>
httpclient自动执行http的302重定向
查看>>
真正最正确的用BAT运行JAVA不显示DOS窗口(连闪一下都不闪)
查看>>
把log4j的日志信息打印到swing组件上
查看>>
把log4j的日志信息打印到swing组件上
查看>>
ext中对Gridpanel的理解
查看>>
ext中在panel中动态添加一个panel
查看>>
修改extjs中表格的默认高度
查看>>
ext中的reader何proxy
查看>>
ext中的formpanel嵌套出现的问题
查看>>
最近状况
查看>>
winform中的状态栏,以及在状态栏目上显示时间
查看>>
给Winform添加登陆的form
查看>>
HttpWebRequest的一些认识
查看>>
HttpWebRequest发送Post数据
查看>>
HttpWebrequest来模拟登陆的全过程
查看>>