Facade模式

本文深入解析外观模式的概念与作用,通过电脑装机实例展示外观模式如何简化客户端与复杂子系统的交互。文章还提供了外观模式的UML图及C++实现代码,帮助读者更好地理解和应用这一模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

更加easy使用。外观模式是一种使用频率很高的模式。通过引入外观角色简化了client与子系统之间的交互,通过一个统一的接口来使用子系统复杂的调用,减少了子系统和client的耦合。

通过现实生活中的一个样例来说明这个问题。我们大学生非常多人都有去电脑城装机的经历。假设我们自己去装机,须要分别购买CPU,内存。硬盘,显示器,机箱和键鼠等配件。整个过程非常麻烦,并且须要了解各种配件的细节以及组装方法。

我们也可能去找电脑城专门帮别人装机的人,他们富有经验。了解各个配件的的细节和组装方法,我们仅仅须要付给他们一些些money就能够省去非常多麻烦。。在这个样例中,这个装机的人就是外观角色,提供给我们一个简洁的接口。自己去处理子配件中各种复杂的事物。

外观模式是迪米特法则的直观应用。模块相互直接应当遵循最少知道原则,低耦合的关系可以减少系统的复杂度,简化client和子系统之间的关系。

外观模式的UML图:


相应的C++实现:

class Package1
	{
	public:
		void method1()
		{
			cout << "method1" << endl;
		}
	};
	class Package2
	{
	public:
		void method2()
		{
			cout << "method2" << endl;
		}
	};
	class Package3
	{
	public:
		void method3()
		{
			cout << "method3" << endl;
		}
	};

	class Facade
	{
	public:
		void doSomething()
		{
			p1->method1();
			p2->method2();
			p3->method3();
		}
		Facade()
		{
			p1 = new Package1();
			p2 = new Package2();
			p3 = new Package3();
		}
		~Facade()
		{
			delete p1;
			delete p2;
			delete p3;
		}
	private:
		Package1 *p1;
		Package2 *p2;
		Package3 *p3;
	};
	
	void test()
	{
		Facade *facade = new Facade();
		facade->doSomething();
		delete facade;
	}

版权声明:本文博客原创文章。博客,未经同意,不得转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值