《《设计模式09》-桥接模式》由会员分享,可在线阅读,更多相关《《设计模式09》-桥接模式(12页珍藏版)》请在金锄头文库上搜索。
1、第三部分结构型设计模式1.桥接模式桥接模式(BridgePattern)2.适配器模式适配器模式(AdpterPattern)3.合成模式合成模式(CompsitePattern)4.门面模式(FacadePattern)5.装饰模式装饰模式(DecoratorPattern)6.代理模式(ProxyPattern)7.享元模式(FlyweightPattern)1桥接模式(BridgePattern)classApublic:virtualA();virtualvoidf();virtualvoidg();private:intx;inty;变化的三个方向:变化的三个方向:1)接口的变化)接
2、口的变化2)实现的变化)实现的变化3)属性的变化)属性的变化(本质上,还本质上,还是实现的变化是实现的变化)适应单个方向的变化v容易v组合和继承方式均可适应接口变化方法classApublic:virtualA();virtualvoidf();virtualvoidg();protected:intx;inty;classNewA:publicApublic:virtualNewA();virtualvoidh();classNewApublic:NewA(A*oldA):pa(oldA)virtualNewA();virtualvoidf()pa-f();virtualvoidg()pa-
3、g();virtualvoidh();private:A*pa;接口变化:增加新的功能接口变化:增加新的功能h()适应实现变化方法classApublic:virtualA();virtualvoidf();virtualvoidg();protected:intx;inty;classNewA:publicApublic:virtualNewA();virtualvoidf()/*新实现*/;classNewApublic:NewA(A*oldA):pa(oldA)virtualNewA();virtualvoidf()/*新实现*/virtualvoidg()pa-g();protecte
4、d:A*pa;多个成员实现的同时变化多个成员实现的同时变化classApublic:virtualA();virtualvoidf();virtualvoidg();protected:intx;inty;classApublic:A(ImpF*f,ImpG*g):pf(f),pg(g)virtualA();virtualvoidf()pf-f();virtualvoidg()pg-g();private:ImpF*pf;ImpG*pg;;classImpFpublic:virtualImpF();vritualvoidf()=0;classImpGpublic:virtualImpG();v
5、ritualvoidG()=0;classImpF1:publicImpFpublic:virtualImpF1();vritualvoidf();classImpG1:publicImpG略略;两个方向同时变化的适应v单一使用组合或继承的不足v结合组合和继承的方式分离变化用组合关联两个方向的变化使单个方向的变化独立出来(独立变化)第一步:分离接口和实现classApublic:virutalA();virtualvoidf();virtualvoidg();classImpApublic:virtualImpA();virtualvoidf();virtualvoidg();protecte
6、d:intx;inty;第二步:用组合连接接口和实现classApublic:virutalA(ImpA*p):impA(p)virtualvoidf()impA-f();virtualvoidg()impA-g();private:ImpA*impA;classImpApublic:virtualImpA();virtualvoidf();virtualvoidg();protected:intx;inty;第三步:使接口和实现的变化独立classApublic:virutalA(ImpA*p):impA(p)virtualvoidf()impA-f();virtualvoidg()impA-g();private:ImpA*impA;classImpApublic:virtualImpA();virtualvoidf();virtualvoidg();protected:intx;inty;classNewA:pubicApublic:virutalNewA(ImpA*p):A(p)virtualvoidh();classImpA1:publicImpApublic:virtualvoidf()/*新实现新实现*/;继承继承继承继承组合组合桥接模式效果v分离了接口及其实现v使得各部分可独立变化、扩展v可对客户隐藏实现部分v也称Handle模式/Handle-Body模式