1、代理模式
侧重于逻辑控制!
2、具体实现
(1)、代码如下
#include<iostream>
using namespace std;
class Subject{ //卖书的接口
public:
virtual void sailbook() = 0;
private:
};
class RealBook : public Subject{ //实体店卖书
public:
virtual void sailbook(){
cout<<"卖书"<<endl;
}
private:
};
//a中包含b类;
//让代理类(Dangdang)包含了一个书店(RealBook),代理和书店都实现了一个协议
class Dangdang : public Subject{ //网上卖书
public:
virtual void sailbook(){
RealBook *rsb = new RealBook;
rsb->sailbook();
discount();
}
public:
void discount(){
cout<<"双十一打折"<<endl;
}
private:
Subject *m_subject;
};
int main(void){
Subject *s = new Dangdang;
s->sailbook();
delete s;
return 0;
}
(2)、运行结果
3、桥接模式
将抽象部分和实现部分进行分离;
外观模式:客户要使用N个功能,N个功能又相似,就可以抽象起来;
享元模式:有一个对象可能使用1000次,怎样避免对这些对象进行重复的创建呢?遍面对象的大量创建!
4、具体实现
(1)、代码如下
#include<iostream>
using namespace std;
class Engine{
public:
virtual void InstallEngine(){
}
private:
};
class Engine4400cc : public Engine{
public:
virtual void InstallEngine(){
cout<<"我是4400 发动机 安装完毕"<<endl;
}
private:
}
class Engine4500cc : public Engine{
public:
virtual void InstallEngine(){
cout<<"我是4500 发动机 安装完毕"<<endl;
}
private:
}
class Car{
public:
Car(Engine *engine){
m_engine = engine;
}
virtual void installEngine = 0;
private:
Engine *m_engine;
};
class BM5{
public:
BM5(){
}
private:
};
int main(void){
return 0;
}
5、组合模式
想将一大堆不同的事物用同一个类进行表达;
转载于:https://blog.51cto.com/wait0804/1885894