结构型模式之外观模式(Facade)

1. 意图
为子系统中的一组接口提供一个一致的界面, F a c a d e模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
2. 动机

将一个系统划分成为若干个子系统有利于降低系统的复杂性。一个常见的设计目标是使子系统间的通信和相互依赖关系达到最小。达到该目标的途径之一是就是引入一个外观(f a c a d e)对象,它为子系统中较一般的设施提供了一个单一而简单的界面。


模式结构:


3.举例

#ifndef FACADE_H
#define FACADE_H
#include <iostream>
using std::cout;
using std::endl;
class CLight{
public:
	void On(){
		cout<<"Turn the light on!"<<endl;
	}
	void Off(){
		cout<<"Turn the light off!"<<endl;
	}
};
class CTelevision{
public:
	void On(){
		cout<<"Turn the television on!"<<endl;
	}
	void Off(){
		cout<<"Turn the television off!"<<endl;
	}
};
class CAirCondition{
public:
	void On(){
		cout<<"Turn the aircondition on!"<<endl;
	}
	void Off(){
		cout<<"Turn the aircondition off!"<<endl;
	}
};
class CFan{
public:
	void On(){
		cout<<"Turn the fan on!"<<endl;
	}
	void Off(){
		cout<<"Turn the fan off!"<<endl;
	}
};
class CSwitch{
private:
	CLight* pLight;
	CTelevision* pTelevision;
	CAirCondition* pAirCondition;
	CFan* pFan;
public:
	CSwitch(){
		pLight=new CLight;
		pTelevision=new CTelevision;
		pAirCondition=new CAirCondition;
		pFan=new CFan;
	}
	void On(){
		pLight->On();
		pTelevision->On();
		pAirCondition->On();
		pFan->On();
	}
	void Off(){
		pLight->Off();
		pTelevision->Off();
		pAirCondition->Off();
		pFan->Off();
	}
};
#endif


#include <iostream>
#include "facade.h"
int main(){
	CSwitch example;
	cout<<"Turn the switch on:"<<endl;
	example.On();
	cout<<"Turn the switch off:"<<endl;
	example.Off();
	return 0;
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值