我是靠谱客的博主 含糊西装,最近开发中收集的这篇文章主要介绍设计模式:装饰器模式、外观模式、适配器模式前言一、装饰器模式二、外观模式三、适配器模式总结,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
文章目录
- 前言
- 一、装饰器模式
- 二、外观模式
- 三、适配器模式
- 总结
前言
装饰器模式、外观模式、适配器模式举例
一、装饰器模式
例子:手机类,可以有多个,这里举例小米手机
初始化只有小米裸机,使用装饰器进行贴膜操作,加皮套操作。
class Phone{
public:
virtual void show() = 0;
};
class MiPhone :public Phone{
public:
virtual void show(){
cout << "小米手机" << endl;
}
};
class Decorator :public Phone{
public:
Decorator(Phone* p) :phone(p){}
virtual void show() = 0;
protected:
Phone* phone;
};
class moDecorator :public Decorator{
public:
moDecorator(Phone* p) :Decorator(p){}
void show(){
phone->show();
mo();
}
void mo(){
cout << "贴膜" << endl;
}
};
class taoDecorator :public Decorator{
public:
taoDecorator(Phone* p) :Decorator(p){}
void show(){
phone->show();
tao();
}
void tao(){
cout << "带皮套" << endl;
}
};
int main()
{
Phone* p = new MiPhone;
p->show();
cout << "-------" << endl;
Phone* moPhone = new moDecorator(p);
moPhone->show();
cout << "---------" << endl;
Phone* taoPhone = new taoDecorator(p);
taoPhone->show();
cout << "---------" << endl;
Phone* moAndTaoPhone = new moDecorator(taoPhone);
moAndTaoPhone->show();
return 0;
}
二、外观模式
例子:有dvd,灯,游戏盒子
游戏模式:dvd打开,灯关闭,游戏盒子打开
其他模式:dvd关闭,灯打开,游戏盒子打开
class DVD{
public:
void on(){ cout << "dvd打开了" << endl; }
void off(){ cout << "dvd关闭了" << endl; }
};
class Light{
public:
void on(){ cout << "Light打开了" << endl; }
void off(){ cout << "Light关闭了" << endl; }
};
class XBox{
public:
void on(){ cout << "XBox打开了" << endl; }
void off(){ cout << "XBox关闭了" << endl; }
};
class Mode{
public:
void GameMode(){
dvd->on(); light->off(); xBox->on();
}
void otherMode(){
dvd->off(); light->on(); xBox->on();
}
private:
DVD* dvd;
Light* light;
XBox* xBox;
};
int main()
{
Mode* m = new Mode;
m->GameMode();
cout << " ----" << endl;
m->otherMode();
return 0;
}
三、适配器模式
例子:对手机充电使用5V,但现在只有220V,使用适配器使其兼容。
class V5{
public:
virtual void useV5() = 0;
};
class V220{
public:
void useV220(){
cout << "使用220V充电" << endl;
}
};
class Adapter:public V5{
public:
Adapter(V220* v):v220(v){}
void useV5(){
v220->useV220();
}
private:
V220* v220;
};
class Phone{
public:
Phone(V5* v):v5(v){}
void charge(){
cout << "phone充电" << endl;
v5->useV5();
}
private:
V5* v5;
};
int main()
{
V5* v5 = new Adapter(new V220);
Phone* p = new Phone(v5);
p->charge();
return 0;
}
总结
个人理解:
- 装饰器模式对类装饰,修改属性,比如可以对小米裸机贴膜或者取膜。
- 外观模式将多个不同类的功能结合在一起。
- 适配器模式将不对应的类通过适配器类使其兼容。
最后
以上就是含糊西装为你收集整理的设计模式:装饰器模式、外观模式、适配器模式前言一、装饰器模式二、外观模式三、适配器模式总结的全部内容,希望文章能够帮你解决设计模式:装饰器模式、外观模式、适配器模式前言一、装饰器模式二、外观模式三、适配器模式总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复