大家好,我是小赵,目前任职藏剑山庄高级铸剑师,在山庄里和我玩的比较好的有老王和老刘他们几个,都是组长级别的二货们,经常混在一起打牌。
今天上午闲得蛋疼晃悠晃悠的晃到的老王的地盘,看到老王在埋头写程序:
public static void main(string[] args) { stock1 stock1 = new stock1(); stock1.buy(); stock2 stock2 = new stock2(); stock2.sell(); stock3 stock3 = new stock3(); stock3.buy(); //省略八百行差不多的代码..... }
这老王似乎在炒股票,好专业的样子。
于是我伸手拍了拍老王的肩膀:“干啥呢?”。
老王一下子打了个哆嗦,回头看到是我,才松了一口气,说道:“搞毛线,今天的情况有点复杂,我这些股票感觉要死一大片,得抓紧时间调整战术”。
我仔细看了一下老王的程序:
股票1:
public class stock1 { public void sell(){ system.out.println("卖出股票1"); } public void buy(){ system.out.println("买入股票1"); } }
股票2:
public class stock2 { public void sell(){ system.out.println("卖出股票2"); } public void buy(){ system.out.println("买入股票2"); } }
股票3:
public class stock3 { public void sell(){ system.out.println("卖出股票3"); } public void buy(){ system.out.println("买入股票3"); } }
省略其他股票。。。。。
看到这里,我脑海中立刻浮现出一张缩略图:
“我草!,老王,你牛逼啊,这么多股票,你一个一个操作,得搞死多少脑细胞啊?小心精尽人亡。”
“老赵,你有好办法?”
下班后,老王来我家里取经,我给他看了个产品,余额宝:
public class yuebao { public void in(){ system.out.println("存钱"); } public void select(){ system.out.println("查询余额"); } public void out(){ system.out.println("取钱"); } private void execute(){ stock1 stock1 = new stock1(); stock1.buy(); stock2 stock2 = new stock2(); stock2.sell(); stock3 stock3 = new stock3(); stock3.buy(); } }
“老赵,你这玩意儿怎么用?”
“这个叫余额宝,我只需要往里存钱,然后就每天收钱就行,啥都不需要管,至于操作各种股票的execute方法由余额宝自己去搞,人家有一批专业的投资专家团队帮你操作资金”
“这样我就不用自己去直接操作几十只股票了?”
“是的,只是如果赚的话可能没你自己操作赚的多,但是非常稳定。市场上还有很多基金也是一样的道理,都是封装了各种股票操作的细节,只给我们提供最简单的投入、取现等大众化接口。”
用图来表达就是这样子:
门面模式(facade pattern),也叫做外观模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
余额宝这个类,其实就是一个门面 facade,它封装了子系统操作各种股票的逻辑,减少了外部系统与内部系统的依赖,使得所有依赖都是针对门面对象,无论子系统中的股票如何变化,都不影响到外部系统。
当然,如果代码表现出的门面模式引起了你的争议,那么你也可以这么写:
public class yuebao { public void stock1buy(){ stock1 stock1 = new stock1(); stock1.buy(); } public void stock1sell(){ stock1 stock1 = new stock1(); stock1.sell(); } public void stock2buy(){ stock2 stock2 = new stock2(); stock2.buy(); } public void stock1sel2(){ stock2 stock2 = new stock2(); stock2.sell(); } public void stock3buy(){ stock3 stock3 = new stock3(); stock3.buy(); } public void stock1sel3(){ stock3 stock3 = new stock3(); stock3.sell(); } }
门面模式是一种常用的封装方式,可能大家在开发中会经常使用到,实际上,门面对象中并没有什么实际的业务逻辑,它只是一个委托类。
如对本文有疑问, 点击进行留言回复!!
荐 厉害了!阿里P8架构师用4大技术文档带你深入解读爆火的中台战略
FlowableException: Error initialising dmn data model报错问题
网友评论