外观模式

外观模式

作用:隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。属于结构型模式。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。提高子系统的独立性和可移植性.简化了类之间的依赖关系

使用场景:

  • 当你要为一个复杂子系统提供一个简单接口时
  • 客户程序与抽象类的实现部分之间存在着很大的依赖性
  • 当你需要构建一个层次结构的子系统时

代码示例

#include<iostream>
 
using namespace std;
 
//创建一个形状的抽象接口shape
class shape
{
public:
	shape() {};
	virtual ~shape() {};
	virtual void draw()=0;
};
 
 
//创建实现形状抽象接口的实体类rectangle
class rectangle :public shape
{
public:
	rectangle() {};
	~rectangle() {};
	void draw();
};
 
void rectangle::draw()
{
	cout << "rectangle::draw()" << endl;
}
 
//创建实现形状抽象接口的实体类square
class square :public shape
{
public:
	square() {};
	~square() {};
	void draw();
};
 
void square::draw()
{
	cout << "square::draw()" << endl;
}
 
//创建实现形状抽象接口的实体类circle
class circle :public shape
{
public:
	circle() {};
	~circle() {};
	void draw();
};
 
void circle::draw()
{
	cout << "circle::draw()" << endl;
}
 
//创建一个外观类。隐藏系统的复杂性,提供访问系统的接口
class shapemaker
{
public:
	shapemaker();
	~shapemaker();
	void drawcircle();
	void drawrectangle();
	void drawsquare();
private:
	shape *circlet;
	shape *rectanglet;
	shape *squaret;
};
 
shapemaker::shapemaker()
{
	circlet = (shape*)new circle();
	rectanglet = (shape*)new rectangle();
	squaret = (shape*)new square();
}
shapemaker::~shapemaker()
{
	delete circlet;
	circlet = NULL;
 
	delete rectanglet;
	rectanglet = NULL;
 
	delete squaret;
	squaret = NULL;
}
void shapemaker::drawcircle()
{
	circlet->draw();
}
void shapemaker::drawrectangle()
{
	rectanglet->draw();
}
void shapemaker::drawsquare()
{
	squaret->draw();
}
 
 
int main()
{
	shapemaker *shapemakert = new shapemaker();
	shapemakert->drawcircle();
	shapemakert->drawrectangle();
	shapemakert->drawsquare();
	delete shapemakert;
	shapemakert = NULL;
	system("pause");
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值