- 1、本文档共83页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TOC \o 1-2 \h \z \u (一)简单工厂模式 h 2
(二)策略模式 h 4
策略与工厂结合 h 6
单一职责原则 h 6
开放――封闭原则 h 6
里氏代换原则 h 7
依赖倒转原则 h 7
(三)装饰模式 h 7
(四)代理模式 h 9
(五)工厂方法模式 h 11
(六)原型模式 h 13
(七)模板方法模式 h 15
迪米特法则 h 16
(八)外观模式 h 16
(九)建造者模式(生成器模式) h 19
(十)观察者模式 h 23
(十一)抽象工厂模式 h 28
(十二)状态模式 h 32
(十三)适配器模式 h 34
(十四)备忘录模式 h 37
(十五)组合模式 h 39
(十六)迭代器模式 h 45
(十七)单例模式 h 46
(十八)桥接模式 h 47
(十九)命令模式 h 49
(二十)责任链模式 h 52
(二十一)中介者模式 h 54
(二十二)享元模式 h 56
(二十三)解释器模式 h 59
(二十四)访问者模式 h 61
(一)简单工厂模式
主要用于创建对象。新添加类时,不会影响以前的系统代码。核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。
GOOD:适用于不同情况创建不同的类时
BUG:客户端必须要知道基类和工厂类,耦合性差
(工厂类与基类为关联关系)
例:
//基类
class COperation
{
public:
int m_nFirst;
int m_nSecond;
virtual double GetResult()
{
double dResult=0;
return dResult;
}
};
//加法
class AddOperation : public COperation
{
public:
virtual double GetResult()
{
return m_nFirst+m_nSecond;
}
};
//减法
class SubOperation : public COperation
{
public:
virtual double GetResult()
{
return m_nFirst-m_nSecond;
}
};
//工厂类
class CCalculatorFactory
{
public:
static COperation* Create(char cOperator);
};
COperation* CCalculatorFactory::Create(char cOperator)
{
COperation *oper;
//在C#中可以用反射来取消判断时用的switch,在C++中用什么呢?RTTI??
switch (cOperator)
{
case +:
oper=new AddOperation();
break;
case -:
oper=new SubOperation();
break;
default:
oper=new AddOperation();
break;
}
return oper;
}
客户端
int main()
{
int a,b;
cinab;
COperation * op=CCalculatorFactory::Create(-);
op-m_nFirst=a;
op-m_nSecond=b;
coutop-GetResult()endl;
return 0;
}
(二)策略模式
定义算法家族,分别封装起来,让它们之间可以互相替换,让算法变化,不会影响到用户
GOOD:适合类中的成员以方法为主,算法经常变动;简化了单元测试(因为每个算法都有自己的类,可以通过自己的接口单独测试。
策略模式和简单工厂基本相同,但简单工厂模式只能解决对象创建问题,对于经常变动的算法应使用策略模式。
BUG:客户端要做出判断
例
//策略基类
class COperation
{
public:
int m_nFirst;
int m_nSecond;
virtual double GetResult()
{
double dResult=0;
return dResult;
}
};
//策略具体类—加法类
class AddOperation : public COperation
{
public:
AddOperatio
您可能关注的文档
- 创业板和中小企业板的数据的实证研究毕业论文.doc
- 创业板市场与中小企业融资探析_毕业论文.doc
- 创业路路基与基层施工方案毕业论文.doc
- 创业投资项目的财务评价研究_工程硕士论文.doc
- 创业投资项目的财务评价研究硕士学位论文.doc
- 创意平板折叠桌大学生数学建模全国一等奖论文.doc
- 创意平板折叠桌论文.doc
- 创意平板折叠桌设计毕业论文.doc
- 创意平板折叠桌数学建模竞赛B题全国二等奖论文.doc
- 创意烟灰缸数控加工工艺分析_毕业论文.doc
- 六年级上册英语教案-Module 3 Health Unit 6 The secret to good health 课时3 教科版(广州,三起).docx
- Module 2 Unit 1 What did you buy(教案)外研版(三起)英语五年级上册.docx
- 四年级上册美术教学设计-第8课 笔的世界 ▏人美版.docx
- 一年级上美术教学设计-第12课 卡通明星总动员 ▏人美版 .docx
- Unit5 My clothes The fourth period(教案)2023-2024学年英语四年级下册.docx
- 《认识几分之一》(教案)2023-2024学年数学三年级上册 人教版.docx
- 【教材分析】三年级下册英语教案-UNIT TWO I LIKE THE SHAPE lesson 7 北京版.docx
- 五年级上册英语Unit 3 Lesson 18 Billy Bee 冀教版(三起).docx
- 【反思课堂】三年级下册英语教案-UNIT FIVE CHILDREN'S DAY lesson 15 北京版.docx
- 四年级上册英语同步教案-Unit2 Lesson 11 Toys冀教版.docx
最近下载
- SP锻炼方面的家规.docx VIP
- 《青春期教育》课件.pptx VIP
- 部编版二年级下册道德与法治 期末考试试卷含答案解析.docx
- 电子信息工程专业毕业论文--白光LED的发光机理及制造难点研究.doc VIP
- 职工食堂员工食堂外包服务项目标书招投标模板.pdf
- 11BS3给水工程华北标图集高清版图集.pdf
- 2021年有机肥料及微生物肥料企业防汛应急救援方案.pdf
- The National Day 国庆节-英文PPT(共24张PPT).ppt VIP
- 22春国家开放大学,本科期末考试,资料,1396药事管理与法规(本).pdf
- (12份试卷合集)成都市重点名校2018-2019学年八下物理期末试卷汇总.pdf
文档评论(0)