- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
四、设计模式方法 ? ? ? ref.DoTask() ? ? ? 自定义一种设计模式Pattern Client DoOperation() AbstractObject DoTask () ConcreteObjectA DoTask () ConcreteObjectB DoTask () ref 四、设计模式方法 GOF Template Pattern--适合动态连接 AbstractClass TemplateMethod()HookMethod1()HookMethod2() while ... do HookMethod1 (). . .if ... then HookMethod2() Do Custom Operation SpecificClass HookMethod1()HookMethod2() 四、设计模式方法 Proxy Pattern realSubject.DoOperation() Client Subject DoOperation() ProxySubject DoOperation() RealSubject DoOperation() Proxy与Decorator在实现上很类似,都保留了另一个对象的指针,向其发送请求。 Proxy不仅仅是为了给对象增加功能,而Decorator的目的只是为了给对象增加功能。如果Decorator做了“增加功能”以外的事,那它实际上也“局部”演化成了Proxy。 Proxy不能动态增加职责,它描述的是静态的关系。如果Proxy也能动态地给对象增加职责,那他实际上也演化成了Decorator。 四、设计模式方法 Proxy Pattern 四、设计模式方法 Bridge Pattern Abstraction Operation() Implementor RealOperation() SpecificImplA RealOperation() imp-RealOperation() Client DoSomething() SpecificImplB RealOperationt() imp . . . Operation(). . . 四、设计模式方法 Bridge Pattern-应用桥模式解决下溯多继承 ClientBaseServicer *svcoperation() BaseServicer svc RealServicer action() real {downcast} RealServicer *real;/* C-style downcast: */real= (RealServicer*) svc;real-action(); Downcast的缘由:需要访问到基类的子孙或子类的方法。 Base *b = new Descendant; Descendant *d = (Descendant *)b; switch (someFlag) { case 1: RealSvc1 *real1; real1= (RealSvc1*) svc; real1-action1(); case 2: RealSvc2 *real2; real2=(RealSvc2*) svc; real2-action2(); case N: RealSvcN *realN; realN=(RealSvcN*) svc; realN-actionN();} ClientBaseServicer *svcoperation() BaseService svc RealSvc1 doit() real RealSvc2 action() RealSvcN request() {downcasts} 需要为每一个新增的RealSvc修改 四、设计模式方法 Bridge Pattern应用-客户集中引用真实服务 RealSvc1 * real1;real1 = (RealSvc1*) svc;real1-doit() BaseClientBaseServicer *svcoperation() BaseService svc RealSvc1 doit() RealSvc2 action() RealSvcN request() RealClient1 operation() RealClient2 operation() RealClientN operation() RealSvc2 * real2;real2 = (RealSvc2*) svc;real2-action() RealSvcN * realN;real
您可能关注的文档
最近下载
- 《电气装置安装工程接地装置施工及验收规范+GB+50169-2016》详细解读.pdf
- THKA多回路智能工业调节器.PDF VIP
- 2025年广西专业技术人员继续教育公需科目(二)答案.docx VIP
- NDS世界树迷宫流程攻略及基础知识.pdf VIP
- 山西煤炭运销集团三百子煤业有限公司120万ta矿井兼并重组整合项目及配套120万ta洗煤厂环境影响报告书简本.doc VIP
- 苏州石刻《天文图》文字.pdf
- 中国气悬浮离心压缩机行业市场占有率及投资前景预测分析报告.pdf VIP
- 米家米家智能蒸发式冷风扇使用说明书.pdf
- 薄层砌筑和薄层抹灰工程施工技术方案.docx VIP
- 2024-2025学年中职语文基础模块 下册高教版(2023)教学设计合集.docx
文档评论(0)