欢迎来到天天文库
浏览记录
ID:5214507
大小:2.57 MB
页数:61页
时间:2017-12-06
《23种设计模式详细介绍》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、设计模式概述目录简单工厂模式1策略模式4简单工厂模式与策略模式相结合7单一职责原则10开放封闭原则10依赖倒转10装饰者模式10代理模式13工厂模式15原型模式17模板方法模式19迪米特法则20外观模式21建造者模式22观察者模式25抽象工厂模式29状态模式32适配器模式36备忘录模式39迭代器模式41单例模式44桥接模式47命令模式50责任链模式53中介者模式56享元模式59解释器模式61访问者模式61简单工厂模式就是让业务逻辑和界面逻辑分开,让他们之间的耦合度下降。通用UML图:本例UML图::依赖关系是一种使用关系,依赖关系通常体现在某个类的方法使用另一个类的对
2、象作为参数。:继承关系用来描述父类与子类自检的关系#include#includeusingnamespacestd;classOperation{public:doubleNumA=0;doubleNumB=0;virtualdoubleGetResult()=0;};classOperationAdd:publicOperation{public:doubleGetResult(){doubleresult=0;result=NumA+NumB;returnresult;}};classOperationSub:publicOp
3、eration{public:doubleGetResult(){doubleresult=0;result=NumA-NumB;returnresult;}};classOperationMul:publicOperation{public:doubleGetResult(){doubleresult=0;result=NumA*NumB;returnresult;}};classOperationDiv:publicOperation{public:doubleGetResult(){doubleresult=0;if(NumB!=0){result=NumA/N
4、umB;returnresult;}else{cout<<"除数不能为0"<5、,"/")){returnnewOperationDiv();}}};客户端代码intmain(){OperatorFactoryFactory;Operation*oper=Factory.CreateOperator("/");oper->NumA=1;oper->NumB=2;cout<GetResult()<6、算法的客户。定义一系列算法,所有算法完成的是相同的功能,只是实现不同,可以以相同的方式调用。策略模式就是用来封装算法的,可以用来封装任何类型的规则。不同的时间应用不同的业务规则的时候,就可以考虑使用策略模式。策略模式还有助于测试,不同的算法可以分开测试。通用UML图:本例UML图::聚合表示整体和部分关系,在聚合关系中成员对象是整体的对象的部分,但是成员对象可以脱离整体对象独立存在。举例:#include#include#include#includeusingnamespacestd;clas7、sCashSuper{public:virtualdoubleacceptCash(doublemoney){return0;}};classCashNormale:CashSuper{public:doubleacceptCash(doublemoney){returnmoney;}};classCashRebate:CashSuper{public:CashRebate(doubleRebate){moneyRebate=Rebate;}doubleacceptCash(doublemoney){returnmoney*moneyRebate;}
5、,"/")){returnnewOperationDiv();}}};客户端代码intmain(){OperatorFactoryFactory;Operation*oper=Factory.CreateOperator("/");oper->NumA=1;oper->NumB=2;cout<GetResult()<6、算法的客户。定义一系列算法,所有算法完成的是相同的功能,只是实现不同,可以以相同的方式调用。策略模式就是用来封装算法的,可以用来封装任何类型的规则。不同的时间应用不同的业务规则的时候,就可以考虑使用策略模式。策略模式还有助于测试,不同的算法可以分开测试。通用UML图:本例UML图::聚合表示整体和部分关系,在聚合关系中成员对象是整体的对象的部分,但是成员对象可以脱离整体对象独立存在。举例:#include#include#include#includeusingnamespacestd;clas7、sCashSuper{public:virtualdoubleacceptCash(doublemoney){return0;}};classCashNormale:CashSuper{public:doubleacceptCash(doublemoney){returnmoney;}};classCashRebate:CashSuper{public:CashRebate(doubleRebate){moneyRebate=Rebate;}doubleacceptCash(doublemoney){returnmoney*moneyRebate;}
6、算法的客户。定义一系列算法,所有算法完成的是相同的功能,只是实现不同,可以以相同的方式调用。策略模式就是用来封装算法的,可以用来封装任何类型的规则。不同的时间应用不同的业务规则的时候,就可以考虑使用策略模式。策略模式还有助于测试,不同的算法可以分开测试。通用UML图:本例UML图::聚合表示整体和部分关系,在聚合关系中成员对象是整体的对象的部分,但是成员对象可以脱离整体对象独立存在。举例:#include#include#include#includeusingnamespacestd;clas
7、sCashSuper{public:virtualdoubleacceptCash(doublemoney){return0;}};classCashNormale:CashSuper{public:doubleacceptCash(doublemoney){returnmoney;}};classCashRebate:CashSuper{public:CashRebate(doubleRebate){moneyRebate=Rebate;}doubleacceptCash(doublemoney){returnmoney*moneyRebate;}
此文档下载收益归作者所有