我是靠谱客的博主 含糊西装,最近开发中收集的这篇文章主要介绍设计模式:装饰器模式、外观模式、适配器模式前言一、装饰器模式二、外观模式三、适配器模式总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 前言
  • 一、装饰器模式
  • 二、外观模式
  • 三、适配器模式
  • 总结


前言

装饰器模式、外观模式、适配器模式举例


一、装饰器模式

例子:手机类,可以有多个,这里举例小米手机
初始化只有小米裸机,使用装饰器进行贴膜操作,加皮套操作。

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;
}

总结

个人理解:

  1. 装饰器模式对类装饰,修改属性,比如可以对小米裸机贴膜或者取膜。
  2. 外观模式将多个不同类的功能结合在一起。
  3. 适配器模式将不对应的类通过适配器类使其兼容。

最后

以上就是含糊西装为你收集整理的设计模式:装饰器模式、外观模式、适配器模式前言一、装饰器模式二、外观模式三、适配器模式总结的全部内容,希望文章能够帮你解决设计模式:装饰器模式、外观模式、适配器模式前言一、装饰器模式二、外观模式三、适配器模式总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部