【软件设计师中级】设计模式之桥接模式学习笔记(c++)

1、birdge(桥接)

(1)意图

将抽象类与实现部门分离,使他们都可以独立变化

(2)结构

Abstraction定一个抽象类接口,维护一个指向Implementor指针。

RefineAbstraction扩充Abstraction定义的接口。

Implementor定一个实现类的接口,该接口不一定要与Abstraction接口完全一致,事实上这两个接口可以完全不同,一般来说,Implementor指接口仅仅提供基本操作而Abstraction定义基于这些操作的较高层次的操作

ConcreteImplementor实现Implementor接口并定义她具体实现

(3) 适用性

1、不希望抽象和她的实现部分之间有一个固定的绑定关系。

2、类的抽象以及她的实现都可以通过生成子类的方法加以扩充。

3、多一个抽象的实现部分的修改应对客户不产生影响

4、c++想对客户完全隐藏抽象实现部分

5、有许多类要生成类层次结构

2、根据UMl类图编写代码

     通过对UML图的理解,Abstraction和Implementor是两个独立的类,各做个的工作。在Abstraction中通过关联(特殊关联聚合)的方式,设置一个指向Implementor的指针,对Implementor类所有的方法和进行掌握和了解,在RefineAbstraction类中根据Implementor的指针,对Abstraction中的方法进行扩充。

     举例:Abstraction类是一个开面点的老板,RefineAbstraction是这个老板的一个面店,老板只负责把面粉买回来,具体的工作通过老板权力(imp)交由职工(Implementor)来完成,具体的工作由不同的面点师( ConcreteImplementor )来做,老板通过Operation()方法让面点师开始干活,面点师则根据自己的分工做出不同的面食比如包子和饺子。

3、代码编写

输出结果:

./a.out
老板把面回来了,张三用来包饺子
老板把面回来了,李四用来做包子
 

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年5月12日
下一篇 2022年5月12日

相关推荐