1、代理模式

侧重于逻辑控制!


2、具体实现

(1)、代码如下

#include<iostream>usingnamespacestd;classSubject{//卖书的接口public:virtualvoidsailbook()=0;private:};classRealBook:publicSubject{//实体店卖书public:virtualvoidsailbook(){cout<<"卖书"<<endl;}private:};//a中包含b类;//让代理类(Dangdang)包含了一个书店(RealBook),代理和书店都实现了一个协议classDangdang:publicSubject{//网上卖书public:virtualvoidsailbook(){RealBook*rsb=newRealBook;rsb->sailbook();discount();}public:voiddiscount(){cout<<"双十一打折"<<endl;}private:Subject*m_subject;};intmain(void){Subject*s=newDangdang;s->sailbook();deletes;return0;}

(2)、运行结果


3、桥接模式

将抽象部分和实现部分进行分离;

外观模式:客户要使用N个功能,N个功能又相似,就可以抽象起来;

享元模式:有一个对象可能使用1000次,怎样避免对这些对象进行重复的创建呢?遍面对象的大量创建!


4、具体实现

(1)、代码如下

#include<iostream>usingnamespacestd;classEngine{public:virtualvoidInstallEngine(){}private:};classEngine4400cc:publicEngine{public:virtualvoidInstallEngine(){cout<<"我是4400发动机安装完毕"<<endl;}private:}classEngine4500cc:publicEngine{public:virtualvoidInstallEngine(){cout<<"我是4500发动机安装完毕"<<endl;}private:}classCar{public:Car(Engine*engine){m_engine=engine;}virtualvoidinstallEngine=0;private:Engine*m_engine;};classBM5{public:BM5(){}private:};intmain(void){return0;}

5、组合模式

想将一大堆不同的事物用同一个类进行表达;