c++ 设计模式23讲之外观模式

外观模式

定义:

提供统一入口来操作子系统,避免客户端与各个子系统的耦合性

优点:

(1)对客户端屏蔽各子系统,减少之间的耦合

(2)子系统的修改也不会影响到外观对象

缺点:

(1)外观模式未能很好限制客户端直接使用子系统

使用范围:

当需访问多粒度的子系统或者子流程情况

如:BS模式的主界面或者导航页面

结构:

 

实现:

namespace structural_pattern
{
	class A_sub_system
	{
	public:
		void do_a() { std::cout << "A子系统-A方法" << std::endl; }
	};
	class B_sub_system
	{
	public:
		void do_b() { std::cout << "B子系统-B方法" << std::endl; }
	};
	class C_sub_system
	{
	public:
		void do_c() { std::cout << "C子系统-C方法" << std::endl; }
	};
	class facade_pattern
	{
	public:
		void do_action()
		{
			A_sub_system asub;
			B_sub_system bsub;
			C_sub_system csub;

			asub.do_a();
			bsub.do_b();
			csub.do_c();
		}
	};
}

测试:

基于GoogleTest 的单元测试框架;框架可参考如下网址:

https://www.cnblogs.com/jycboy/p/gtest_catalog.html

using namespace structural_pattern;

TEST(test_facade_pattern_do_action, success_connect_A_B_C_system)
{
	facade_pattern facede;
	facede.do_action();
}

总结

(1)通过外观类提供统一的入口

(2)考虑与代理模式区别,代理模式是1对1执行同一件事,外光模式是1对多的多个动作集成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值