随着冷空气的来袭,北京迎来了第一场雪。
随着英雄联盟S11比赛的结束,EDG拿到了期盼已久的冠军。
有人可能不看英雄联盟的比赛,包括我。
但是这无所谓。
我们看一下EDG的夺冠路程:
s4:八强
s5:八强
s6:八强
s7:十六强
s8:八强
s9:N强
s10:N强
s11: 冠军
或许这跟很多人的人生一样,刚开始在小学、初中成绩很不错。
但是到了高中人才多了之后自己成绩开始落后,随着大学的到来可能稍微努努力成绩就会排在前边。
但是一旦到了社会,你会发现你的地位(单指能力)会处在很多人之下。
所以这时候你会放弃吗?
EDG没有放弃,s9、s10他们什么都没有得到,但是他们依旧坚持。
经过不懈的努力他们终于在s11夺冠。
我们没有什么理由可以不努力。
好了,鸡血走一波之后我们继续今天的知识点学习。
今天我们来学一个设计模式:门面模式
这个模式很简单,但是我们要想一个故事来描述一下
一、朝阳区大妈
话说朝阳区住着很多个明星,这些明星之间爱恨情仇相互交织。你根本分不清楚谁是谁的媳妇儿,谁是谁的小三,谁是谁的情儿。
这天他们莫名的在小区门口撞见了,于是就开始了争吵。
画面是这个样子的:
就问你乱不乱,这其实还好,娱乐圈可比这个链长、大、刺激。
这时候我们伟大的朝阳区大妈就来了,大妈说了你们有事儿全找我,我来帮你们解决。
于是就成了这样:
大妈这个角色叫什么呢,叫调停者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();
}
}
好了,结束了,下次再见。
不要忘记曾经的梦想,为之努力!