结构型模式----外观模式(C++)

结构型模式----外观模式

外观模式为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问

模式结构与实现
模式的结构
  • 外观角色:为多个子系统对外提供了一个共同的接口
  • 子系统角色:实现系统的部分功能,客户可以通过外观角色访问其资源
  • 客户角色:通过一个外观角色访问子系统的功能
外观模式UML类图

在这里插入图片描述

优点
  • 降低了子系统和客户端的耦合度
  • 对用户屏蔽了子系统组件
缺点
  • 不能很好的限制客户使用子系统类
  • 增加新的子系统可能需要修改外观类或客户端的源代码,违反了“开闭原则”
外观模式的应用场景
  1. 拥有多个子系统的复杂系统构建时,外观模式可以为系统设计一个简单的接口供外界访问
  2. 当客户端和多个子系统之间有很大联系时,引入外观模式可以将他们分离,从而提高子系统的独立性和可移植性
外观模式实例
#include <iostream>
using namespace std;

class system1
{
public:
	void run()
	{
		cout << "子系统一启动" << endl;
	}
};

class system2
{
public:
	void run()
	{
		cout << "子系统二启动" << endl;
	}
};

class system3
{
public:
	void run()
	{
		cout << "子系统三启动" << endl;
	}
};

class system4
{
public:
	void run()
	{
		cout << "子系统四启动" << endl;
	}
};

class Faced 
{
public:
	Faced()
	{
		pSystem1 = new system1;
		pSystem2 = new system2;
		pSystem3 = new system3;
		pSystem4 = new system4;
	}
	void work()
	{
		pSystem1->run();
		pSystem2->run();
		pSystem3->run();
		pSystem4->run();
	}
private:
	system1* pSystem1;
	system2* pSystem2;
	system3* pSystem3;
	system4* pSystem4;
};

int main()
{
	Faced* face = new Faced;
	face->work();
	system("pause");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值