2022年桥接模式 .pdf
《2022年桥接模式 .pdf》由会员分享,可在线阅读,更多相关《2022年桥接模式 .pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、桥接模式考虑装操作系统,有多种配置的计算机,同样也有多款操作系统。如何运用桥接模式呢?可以将操作系统和计算机分别抽象出来,让它们各自发展,减少它们的耦合度。当然了,两者之间有标准的接口。这样设计,不论是对于计算机,还是操作系统都是非常有利的。下面给出这种设计的UML 图,其实就是桥接模式的UML 图。外观模式应该是用的很多的一种模式,特别是当一个系统很复杂时,系统提供给客户的是一个简单的对外接口, 而把里面复杂的结构都封装了起来。客户只需使用这些简单接口就能使用这个系统,而不需要关注内部复杂的结构。DP 一书的定义:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使
2、得这一子系统更加容易使用。举个编译器的例子,假设编译一个程序需要经过四个步骤:词法分析、语法分析、中间代码生成、机器码生成。学过编译都知道, 每一步都很复杂。对于编译器这个系统,就可以使用外观模式。可以定义一个高层接口,比如名为Compiler的类,里面有一个名为Run 的函数。客户只需调用这个函数就可以编译程序,至于 Run 函数内部的具体操作,客户无需知道。下面给出UML 图,以编译器为实例。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - -
3、 - - - - 组合模式:将对象组合成树形结构以表示“ 部分 -整体 ” 的层次结构。 组合使得用户对单个对象和组合对象的使用具有一致性。注意两个字“ 树形 ” 。这种树形结构在现实生活中随处可见,比如一个集团公司,它有一个母公司,下设很多家子公司。不管是母公司还是子公司,都有各自直属的财务部、人力资源部、销售部等。对于母公司来说,不论是子公司,还是直属的财务部、人力资源部,都是它的部门。整个公司的部门拓扑图就是一个树形结构。下面给出组合模式的UML 图。从图中可以看到,FinanceDepartment、HRDepartment两个类作为叶结点,因此没有定义添加函数。而ConcreteCo
4、mpany类可以作为中间结点,所以可以有添加函数。那么怎么添加呢?这个类中定义了一个链表,用来放添加的元素。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - 外观模式 (Facade) :为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。享元( Flyweight,别名 “ 蝇量 ” )1、引言如果系统中存在大量的轻量级对象(如文字编辑器中的字符对象), 可以考虑引入享元模式,利
5、用共享技术来节约存储空间。2、一般思路下图中, FlyweightFactory拥有一个 对象池 (本例由 vector 来实现,也可用hash 表等进行有效管理)。客户通过GetFlyweight(key)来访问对象池:若池中已有对象key,则返回该名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - 对象;若没有,则创建一个ConcreteFlyweight对象返回给客户。 UnshareConcreteFlyweight是无需
6、共享的对象。客户调用 Operation() 并传递外部状态extrinsicState ,控制对象的状态。举个围棋的例子,围棋的棋盘共有361 格,即可放361 个棋子。现在要实现一个围棋程序,该怎么办呢?首先要考虑的是棋子棋盘的实现,可以定义一个棋子的类,成员变量包括棋子的颜色、形状、位置等信息,另外再定义一个棋盘的类,成员变量中有个容器,用于存放棋子的对象。下面给出代码表示:棋子的定义,当然棋子的属性除了颜色和位置,还有其他的,这里略去。这两个属性足以说明问题。享元模式解决:可以发现, 棋盘的容器中存放了已下的棋子,而每个棋子包含棋子的所有属性。一盘棋往往需要含上百颗棋子,采用上面这种实
7、现,占用的空间太大了。如何改进呢?用享元模式。其定义为:运用共享技术有效地支持大量细粒度的对象。在围棋中,棋子就是大量细粒度的对象。其属性有内在的,比如颜色、形状等,也有外在的,比如在棋盘上的位置。内在的属性是可以共享的,区分在于外在属性。因此, 可以这样设计,只需定义两个棋子的对象,一颗黑棋和一颗白棋,这两个对象含棋子的内在属性;棋子的外在属性,即在棋盘上的位置可以提取出来,存放在单独的容器中。相比之前的方案,现在容器中仅仅存放了位置属性,而原来则是棋子对象。显然,现在的方案大大减少了对于空间的需求。关注 PieceBoard 的容器,之前是 vector m_vecPiece, 现在是 v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年桥接模式 2022 年桥接 模式
限制150内