欢迎来到天天文库
浏览记录
ID:52064833
大小:768.00 KB
页数:31页
时间:2020-03-31
《《Bridge桥接模式》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Bridge-桥接主要内容模式动机模式定义模式结构模式的程序表示C++模式的程序表示Java实例与解析模式效果评价模式的适用环境模式扩展已知应用模式小结Bridge-桥接:动机考虑在一个用户界面工具箱中,一个可移植的Window抽象部分的实现。假如采用继承机制有两个不足之处:(1)扩展Window抽象使之适用于不同种类的窗口或新的系统平台很不方便。(2)继承机制使得客户代码与平台相关。1Bridge-桥接:动机Bridge模式解决以上问题的方法是,将Window抽象和它的实现部分分别放在独立的类层次结构中。其中一个类层次结构针对窗口接口
2、(Window、IconWindow、TransientWindow),另外一个独立的类层次结构针对平台相关的窗口实现部分,这个类层次结构的根类为WindowImp。2Bridge-桥接:动机12Bridge-桥接:动机对于有两个变化维度(即两个变化的原因)的系统,采用方案二来进行设计系统中类的个数更少,且系统扩展更为方便。设计方案二即是桥接模式的应用。桥接模式将继承关系转换为聚合关系,从而降低了类与类之间的耦合,减少了代码编写量。Bridge-桥接:定义桥接模式(BridgePattern):将抽象部分与它的实现部分分离,使它们都可以
3、独立地变化。它是一种对象结构型模式,又称为柄体(HandleandBody)模式或接口(Interface)模式。Bridge-桥接:结构Abstraction(Window)—定义抽象类的接口。—维护一个指向Implementor类型对象的指针。RefinedAbstraction(IconWindow)—扩充由Abstraction定义的接口。Bridge-桥接:结构Implementor(WindowImp)—定义实现类的接口,该接口不一定要与Abstraction的接口完全一致;事实上这两个接口可以完全不同。一般来讲,Imple
4、mentor接口仅提供基本操作,而Abstraction则定义了基于这些基本操作的较高层次的操作。ConcreteImplementor(XwindowImp,PMWindowImp)—实现Implementor接口并定义它的具体实现。Bridge-桥接:结构理解桥接模式,重点需要理解如何将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化。抽象化:抽象化就是忽略一些信息,把不同的实体当作同样的实体对待。在面向对象中,将对象的共同性质抽取出来形成类的过程即为抽象化的过程。实现化:针对抽象
5、化给出的具体实现,就是实现化,抽象化与实现化是一对互逆的概念,实现化产生的对象比抽象化更具体,是对抽象化事物的进一步具体化的产物。脱耦:脱耦就是将抽象化和实现化之间的耦合解脱开,或者说是将它们之间的强关联改换成弱关联,将两个角色之间的继承关系改为关联关系。桥接模式中的所谓脱耦,就是指在一个软件系统的抽象化和实现化之间使用关联关系(组合或者聚合关系)而不是继承关系,从而使两者可以相对独立地变化,这就是桥接模式的用意。Bridge-桥接:程序表示C++classWindow{public:Window(View*contents);//re
6、questshandledbywindowvirtualvoidDrawContents();virtualvoidOpen();virtualvoidClose();virtualvoidIconify();virtualvoidDeiconify();//requestsforwardedtoimplementationvirtualvoidSetOrigin(constPoint&at);virtualvoidSetExtent(constPoint&extent);virtualvoidRaise();virtualvoidLo
7、wer();virtualvoidDrawLine(constPoint&,constPoint&);virtualvoidDrawRect(constPoint&,constPoint&);virtualvoidDrawPolygon(constPoint[],intn);virtualvoidDrawText(constchar*,constPoint&);protected:WindowImp*GetWindowImp();View*GetView();private:WindowImp*_imp;View*_contents;/
8、/thewindow'scontents};classWindowImp{public:virtualvoidImpTop()=0;virtualvoidImpBottom()=0;virtualvoidI
此文档下载收益归作者所有