最常用的设计模式---外观模式(C++实现)

本文介绍了外观模式的概念,其目的是简化子系统的接口,通过封装复杂的处理过程,使用户仅需调用一个简单的接口即可完成所需操作。示例中通过餐馆场景直观展示了外观模式的应用,以及如何通过外观模式简化类的接口。

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

       外观模式:提供了一个统一的接口,用来访问子系统的一群接口。外观定义了一个高层接口,让子系统更容易使用。

      目地:让接口变得简单,是为了简化子系统的接口。

     外观模式也十分的简单,简而言之,就是简化你的类的接口,将一系列的复杂的过程封装到内部,对外只提供最简单的接口

     结构图:


应用示例:

     假如你想吃一顿大餐,那么我想你要,首先去买菜,然后回到家后自己做菜,最后吃完饭以后要洗碗打扫。

     这么一来你需要3个类,Shopper, Cook, Dishwasher, 分别来完成买菜,做菜,洗碗等工作,显然这非常麻烦,能不能简化这个过程?当然可以!去餐馆吃。

     餐馆这时候显然就是外观模式了,他把复杂的过程封装到内部,用户不用关心细节。

实现代码:

    Shopper 采购类

class Shopper
{
public:
	void shopForGroceries()
	{
		cout<<"买菜"<<endl;
	}

};

       Cook 厨师类

class Cook
{
public:
	void doCook()
	{
		cout<<"做饭"<<endl;
	}

};


      洗碗工类 Dishwasher

class Dishwasher
{
public:
	void washDish()
	{
		cout<<"洗碗"<<endl;
	}
};


      餐馆类

class Restaurant
{
public:
	Restaurant()
	{

	}
	void haveAMeal()
	{
		m_shopper.shopForGroceries();
		m_cook.doCook();
		m_washer.washDish();
	}
private:
	Shopper m_shopper;
	Cook  m_cook;
	Dishwasher m_washer;
};

     客户端:

	Restaurant rt;
	rt.haveAMeal();

       总结:外观模式的主要用途就是为子系统的复杂处理过程提供方便的调用方法,使得子系统更加容易被使用。Façade对象通常属于单实例模式。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值