用C++跟你聊聊“外观模式”

   日期:2020-05-18     浏览:91    评论:0    
核心提示:文章目录从买股票的故事说起外观模式UML示例代码我在哔哔两句外观的优势从买股票的故事说起新手接触股票时,总是容易亏钱,不论是熊市还是牛市。为啥嘞,作为一个外行人,我觉得新手散户需要有莫大的勇气和智慧去面对种类繁多的个股,一不小心就跌了跟头。那为什么不找个专业人士带呢?比如把钱放进基金。我知道,赚的少嘛。如果是我,我会选择放基金,自己买一支学习股。毕竟人家是专业的,我们没必要用我们的业余去挑战人家吃饭的本事。软件开发,程序编写的过程,又何尝不似这股票买卖,我们就是散户,面对一大堆的接口,我们难免要.c/c+


文章目录

    • 从买股票的故事说起
    • 外观模式UML
    • 示例代码
    • 我在哔哔两句
    • 外观的优势

从买股票的故事说起

新手接触股票时,总是容易亏钱,不论是熊市还是牛市。

为啥嘞,作为一个外行人,我觉得新手散户需要有莫大的勇气和智慧去面对种类繁多的个股,一不小心就跌了跟头。

那为什么不找个专业人士带呢?比如把钱放进基金。我知道,赚的少嘛。如果是我,我会选择放基金,自己买一支学习股。毕竟人家是专业的,我们没必要用我们的业余去挑战人家吃饭的本事。

软件开发,程序编写的过程,又何尝不似这股票买卖,我们就是散户,面对一大堆的接口,我们难免要头皮发麻然后“赔本离场”。那么,有没有什么好的办法,就像找一个基金代理人那样?有的,那就是外观模式。

外观模式UML

示例代码

#include<iostream>

using namespace std;

class Stock1 {
public:
	void sell() { cout << "股票1卖出" << endl; }
	void buy() { cout << "股票1买入" << endl; }
};

class Stock2 {
public:
	void sell() { cout << "股票2卖出" << endl; }
	void buy() { cout << "股票2买入" << endl; }
};
class Stock3 {
public:
	void sell() { cout << "股票3卖出" << endl; }
	void buy() { cout << "股票3买入" << endl; }
};

class Funk {
private:
	Stock1 *gu1;
	Stock2* gu2;
	Stock3* gu3;
public:
	Funk() {
		gu1 = new Stock1();
		gu2 = new Stock2();
		gu3 = new Stock3();
	}

	void buy() {
		gu1->buy();
		gu2->buy();
		gu3->buy();
	}

	void sell() {
		gu1->sell();
		gu2->sell();
		gu3->sell();
	}
};

int main()
{
	Funk* my_funk = new Funk();
	my_funk->buy();
	my_funk->sell();

	return 0;
}

我在哔哔两句

这平淡无奇的代码设计,却无法掩盖住外观模式的光芒。几乎每个项目开发、软件设计都要用到外观设计。

可能会觉得是固定代码的堆砌,死代码。但是我想举个栗子,就算是cout<<" "<<endl;这样的打印函数,它右何尝不是外观模式的体现呢?
不开玩笑,如果你不用这些外观模式打包好的接口iucn,大可以自己去调用底层函数,怕是连头文件都要找不到吧哈哈哈。

外观的优势

外观模式的优点非常显而易见,对客户屏蔽了内部系统实现,客户的接入成本大大降低,耦合度也变得简单。并且,子系统的变更,对客户的影响也降低,虽然用户也需要修改代码,但是大多时候只需要修改外观即可。同时,外观模式虽然提供了一个统一的入口,但并不妨碍用户直接使用子系统,使用更加复杂的功能。当然,凡事有利必有弊,外观设计模式存在什么问题呢?虽然外观模式提供了一个入口,但是并不能阻止业务方直接调用子系统,可能会给人这样一种感觉,业务方一定是这么用的,不会产生bug,从而让人麻痹,所以,使用外观模式,同时也要对子系统做好保护。其次,外观模式实际上违背了设计模式中的开闭原则,如果我们要修改业务逻辑,常常业务方也需要进行代码修改。那么,什么样的情况下适合使用外观模式呢?如果我们的调用方用到的场景都是一样的,但我们的子系统又非常地复杂,我们可以考虑封一个外观,让业务方更容易接入。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服