初入职场的小黄利用外观模式,直接走上会所内模的道路

简介: 初入职场的小黄利用外观模式,直接走上会所内模的道路

一、什么是外观模式

外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。

这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。

外观模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。

UML图如下所示:

其中,Facade为外观角色,也叫门面角色,客户端可以调用这个角色,这个角色知晓子系统(SubsystemClasses1、SubsystemClasses2…)的所有功能,将客户端的请求代理给某个子系统,子系统去实现功能。

比如去医院看病,可能要去挂号、门诊、划价、取药,让患者或患者家属觉得很复杂,如果有提供接待人员,只让接待人员来处理,就很方便。

  • Facade:接待人员
  • SubsystemClasses1:挂号
  • SubsystemClasses2:门诊
  • SubsystemClasses3:划价

这时候我们只需要去找到某个接待人员,让其带领我们去挂号、门诊、划价等流程,整个流程就会及其方便,这也是外观模式最大的好处。

二、为什么要用外观模式

如果现在的你有十万元放在余额宝,你感觉余额宝的利息太少,想要获取更大的利润,就上网查询 手中有十万存款,怎样能最大利益化?

这时候,可能有一个东西映入你眼帘:股票

当然,我们基本都是 股票 小白,我们也不懂财务知识、不会分析公司的未来发展,但是我就是想参加怎么办?

这时候有一个叫做基金的东西

基金就是别人替你买股票,所以人的能力是关键,你必须找到一个人或者团队,他们有能力给你选择好的股票进行投资。

所以,我们将自己的钱交给某个基金,让其代替我们去买一些比较好的股票。

我们可以发现,如果我们自己去挑选股票的话,每种股票可能要费大量的时间

如果我们去购买基金,我们可以挑选一个可靠的基金,通过这个基金来购买一些股票,这时候我们不需要关心这些股票,只需要找到这个基金。

类似我们的外观模式,我们只需要找到基金这个外观角色,让基金去执行股票、债券、外汇这些子系统,最终成为人生赢家。

我们来比较一下两种方式的区别:

  • 外观模式

  • 普通模式

三、外观模式的实现

整体结构图如下图所示:

Fund:

public class Fund {
    Stock1 stock1;
    Stock2 stock2;
    Stock3 stock3;
    NationalDebt1 nationalDebt1;
    Realty1 realty1;
    public Fund() {
        stock1 = new Stock1();
        stock2 = new Stock2();
        stock3 = new Stock3();
        nationalDebt1 = new NationalDebt1();
        realty1 = new Realty1();
    }
    public void buyFund() {
        stock1.buy();
        stock2.buy();
        stock3.buy();
        nationalDebt1.buy();
        realty1.buy();
    }
    public void sellFund() {
        stock1.sell();
        stock2.sell();
        stock3.sell();
        nationalDebt1.sell();
        realty1.sell();
    }
}

Stock1:

public class Stock1 {
    public void buy() {
        System.out.println("股票1买入");
    }
    public void sell() {
        System.out.println("股票1售出");
    }
}

TestMain:

public class TestMain {
    public static void main(String[] args) throws InterruptedException {
        Fund fund = new Fund();
        // 购买基金
        fund.buyFund();
        // 等待一段时间
        System.out.println("等待中......");
        Thread.sleep(200);
        // 售出基金
        fund.sellFund();
    //股票1买入
        //股票2买入
        //股票3买入
        //债券1买入
        //房地产1买入
        //等待中......
        //股票1售出
        //股票2售出
        //股票3售出
        //债券1售出
        //房地产1售出
    }
}

四、总结

我们可以看到,通过直接调用 fundbuyFund()sellFund() 可以实现股票、债券、房地产的统一购买和售卖

我们只需要通过 Fund 这个接待员,就可以获取更大的利润

外观模式总体来说,不算复杂,多应用在对方只需要一个接口,不需要知晓你内部的运行逻辑

比如我们在和其他业务方进行沟通时,他们可能需要调用你的一个接口,这个时候,我们将这个接口暴露给他们,但其中内部逻辑封装在我们这,防止业务的泄漏。

本期的内容就到这里,我是一名独角兽企业的Java开发工程师,有问题可以留言或者私信加我微信,我们下期再见!


相关文章
|
5月前
|
设计模式 容器
初入职场的小黄不懂策略模式,差点被开除!
初入职场的小黄不懂策略模式,差点被开除!
|
9月前
|
人工智能
看我今年奋斗,观我未来之路
看我今年奋斗,观我未来之路
39 0
|
监控 移动中间件 安全
关于程序员的职业操守,从《匠艺整洁之道》谈起
《匠艺整洁之道》是鲍勃大叔的整洁系列新书。这本书主要从纪律、标准、操守三个方面阐述了软件从业者应该如何要求自己,提升研发质量、效率、道德水准,本文主要围绕《匠艺整洁之道》的第三部分 -- 操守,聊一聊我们程序员该如何自我约束、自我提升。
466 1
关于程序员的职业操守,从《匠艺整洁之道》谈起
|
容灾 分布式数据库 数据库
星光不问赶路人,感恩有你 1 路同行!
OceanBase 取得了哪些小成绩?快来跟我一起解锁吧
星光不问赶路人,感恩有你 1 路同行!
|
Web App开发 程序员
启迪人心:10个有关编程的至理名言
导读:程序员世界里有哪些名言呢?Jun Auza 列出了一些启迪人心的至理名言,它们大多来自产业界富于经验的人们。 下文列出前10个供读者欣赏: 10. “People think that computer science is the art of geniuses but the actual...
1017 0
|
程序员
第二夜:万圣节,讲一个关于程序员的故事
次日中午,小王已经不知睡去了多久,渐渐恢复了知觉。感觉嘴鼻被一团毛绒的东西压着,似乎还带着女人特有的体香。小王潜意识中出现了一个邪恶的画面感,顿时清醒了。睁开眼睛发现自己竟然躺在茶水间的沙发上,身上盖着一件女式的厚毛领风衣,昨天晚上发生的事情他似乎已经断片,他正努力的回忆自己是何时睡在了这里时。
1082 0
|
程序员 安全
第一夜:万圣节,讲一个关于程序员的故事
  小王加入这家公司刚刚一个星期,这天临时有一个需求,他和同事们加班到了很晚,因为家离得很远而这个时间早已没有公交车了,他索性决定不回家了通宵把BUG 都解决 。同事们陆陆续续都离开了,最后一个走的同事劝他还是不要在公司过夜,如果实在没有地方去,可以到网吧包宿。
990 0
|
程序员 Android开发
又一名程序员倒下,内心悲哀:我们只是新时代农民工
又一名程序员倒下,究竟是社会的摧残还是生活的压力?作为程序员,我们想到了什么
1812 0
|
程序员
程序猿为什么逃离北上广?
北上广承载了很多年轻人的梦想,但是当现实与梦想冲突时,我们不得不选择离开。并不是因为我们懦弱,而是因为我们的内心。
1596 0