随着冷空气的来袭,北京迎来了第一场雪。

随着英雄联盟S11比赛的结束,EDG拿到了期盼已久的冠军。

有人可能不看英雄联盟的比赛,包括我。

但是这无所谓。

我们看一下EDG的夺冠路程:

s4:八强

s5:八强

s6:八强

s7:十六强

s8:八强

s9:N强

s10:N强

s11: 冠军

或许这跟很多人的人生一样,刚开始在小学、初中成绩很不错。

但是到了高中人才多了之后自己成绩开始落后,随着大学的到来可能稍微努努力成绩就会排在前边。

但是一旦到了社会,你会发现你的地位(单指能力)会处在很多人之下。

所以这时候你会放弃吗?

EDG没有放弃,s9、s10他们什么都没有得到,但是他们依旧坚持。

经过不懈的努力他们终于在s11夺冠。

我们没有什么理由可以不努力。

好了,鸡血走一波之后我们继续今天的知识点学习。

今天我们来学一个设计模式:门面模式

这个模式很简单,但是我们要想一个故事来描述一下

一、朝阳区大妈

话说朝阳区住着很多个明星,这些明星之间爱恨情仇相互交织。你根本分不清楚谁是谁的媳妇儿,谁是谁的小三,谁是谁的情儿。

这天他们莫名的在小区门口撞见了,于是就开始了争吵。

画面是这个样子的:

北京喜提初雪,Edg喜夺冠军_英雄联盟

就问你乱不乱,这其实还好,娱乐圈可比这个链长、大、刺激。

这时候我们伟大的朝阳区大妈就来了,大妈说了你们有事儿全找我,我来帮你们解决。

于是就成了这样:

北京喜提初雪,Edg喜夺冠军_设计模式_02

大妈这个角色叫什么呢,叫调停者Mediator

我们项目中什么时候需要这个大妈呢,最常见的就是我们的消息中间件MQ

还有我们这几年比较流行的数据中台

二、写代码

你觉得我会写一写代码来展示吗? 你错了!

我理解门面模式是在整个架构设计上使用比较好,在单个功能上可能不是很能体现它的价值。

但是身为程序员我怎么能不写个代码来表示表示

我们分这么几个类:

部门A、老家证明、老家户口本、补卡部门

package facade;

/**
* @author 木子的昼夜编程
*/
public class HometownCertificate {
public void execute(){
System.out.println("老家证明");
}
}

package facade;

/**
* @author 木子的昼夜编程
*/
public class HomeAccountBook {
public void execute(){
System.out.println("老家户口本");
}
}

package facade;

/**
* @author 木子的昼夜编程
*/
public class DeptA {
public void execute(){
System.out.println("证明你是你!");
}
}

package facade;

/**
* @author 木子的昼夜编程
*/
public class CardReplacementDepartment {
public void execute(){
System.out.println("补卡部门");
}
}

补卡流程:

package facade;

/**
* @author 木子的昼夜编程
*/
public class Test {
public static void main(String[] args) {
// 耗时一天
HometownCertificate hometownCertificate = new HometownCertificate();
// 耗时一天
HomeAccountBook homeAccountBook = new HomeAccountBook();
// 耗时一天
DeptA deptA = new DeptA();
// 耗时一天
CardReplacementDepartment cardReplacementDepartment = new CardReplacementDepartment();
hometownCertificate.execute();
homeAccountBook.execute();
deptA.execute();
cardReplacementDepartment.execute();
}
}

改良后的补卡流程:

package facade;

/**
* @author 木子的昼夜编程
*/
public class MyFacade {
public void execute(){
// 耗时一天
HometownCertificate hometownCertificate = new HometownCertificate();
// 耗时一天
HomeAccountBook homeAccountBook = new HomeAccountBook();
// 耗时一天
DeptA deptA = new DeptA();
// 耗时一天
CardReplacementDepartment cardReplacementDepartment = new CardReplacementDepartment();
hometownCertificate.execute();
homeAccountBook.execute();
deptA.execute();
cardReplacementDepartment.execute();
}
}

来补卡:

package facade;

/**
* @author 木子的昼夜编程
*/
public class Test {
public static void main(String[] args) {
// 俩小时搞定
MyFacade myFacade = new MyFacade();
myFacade.execute();
}
}

好了,结束了,下次再见。

不要忘记曾经的梦想,为之努力!