设计模式:外观模式 C++实现

本文介绍了外观模式,一种对复杂多对象的封装,以降低客户端与其之间的耦合。通过理财基金的例子,解释了外观模式的概念,并用C++展示了其实现,强调其在系统解耦和维护中的重要作用。

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


前言

今天复习了外观模式,不知道是不是最近一直都在复习设计模式的缘故,感觉很多模式都有很多相似之处,比如今天的外观模式,感觉和之前的中介者模式有点类似,都是从众多对象间解耦合,避免复杂的对象间通信,直接和一个统一的第三方对象通信即可。


1. 外观模式的理解

外观模式,个人理解,就是对复杂多样的多个对象的一种封装,客户端直接和这个封装类进行通信,该类内部负责进行相应的处理,对客户端而言,只需要了解这一封装类即可,不需要知道该封装类内部具体包含了多少对象,以及内部是如何运作的,实现了解耦合。就如同我们理财中的买基金一样,基金里包含了不同类型的理财产品,比如不同类型的股票,国债,…。如果我们自己来买这些不同类型的理财产品,需要足够的知识才有可能赚到钱,但是往往我们没有那么多时间和精力来学习这些专业知识。这里,基金就是这个封装类(外观类),由专业的基金经理帮助我们买不同类型的理财产品(复杂多样的对象),这样既降低了风险也不需要我们有很专业的知识,多好!

外观模式的定义与类图(引用《大话设计模式》)如下所示:
在这里插入图片描述
在理财的例子中,购买基金的人就是Client, 基金就是Facade类, 不同类型的理财产品就对应不同的SubSustemOne, SubSystemTwo, …。


2. C++实现外观模式

这里使用C++实现上述理财产品的例子,类图(引用《大话设计模式》)如下:
在这里插入图片描述
C++代码:

#include <iostream>
#include <memory>

//*******************Facade Pattern*******************
class Stock1
{
   
public:
	void Buy()
	{
   
		std::cout << "Buy Stock1..." << std::endl;
	}

	void Sell()
	{
   
		std::cout << "Sell Stock1..." << std::endl;
	}
};

class Stock2
{
   
public:
	void
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值