架构师训练营 - 第 3 周 - 总结
框架案例:反应式编程框架设计
---- 程序是如何运行又是如何崩溃的
这是一张图tomcat的运行示意图,其实生活中我们也遇到这样的场景,典型的场景就是银行排队,早期每个窗口都排着长长的队伍,那时真的是拿人头在排队,到后来的是叫号系统,体检就好多了,反应式编程就是这个叫号系统,没排到你,你尽可以找找有没有航空座椅坐下来做你的事情,等叫到你了,就是你的showtime了。
设计模式
设计模式就是行业套路
模式的四个部分
模式的名称
少量字组成,有助于表达我们的设计
待解决的问题
描述何时需要运用这种模式,以及应用模式的环境
解决方案
描述了组成设计的元素(类和对象)、它们的关系、职责以及合作。但这种解决方案是抽象的。
结论
运用这种方案所带来的利弊。主要是指它对系统的弹性、扩展性、和可移植性的影响。
设计模式的分类
从功能分
创建模式
对类实例化过程的抽象
结构模式
将类或者对象结合在一起形成更大的结构
行为模式
对在不同的对象之间划分责任和算法的抽象化。
从方式分
类模式
以继承的方式实现模式,静态的。(不建议)
对象模式
以组合的方式实现模式,动态的
单例模式
对外隐藏构造函数
两种实现方式:
类提前静态创建private变量
调用时没有实例时临时加锁创建
适配器模式
类的适配(不建议,违反里氏替换原则)
例:继承ArrayList前实现Sortable接口
对象的适配
例:组合 list 并实现Sortable接口
JUnit框架中的设计模式
策略模式
继承TestCase
实现框架约定的方法、用例框架定义的注解对测试方法进行标注
核心方法 runBare(),这是一个模板方法
调用初始化方法:setUp()
调用测试方法: testXXX()
调用清除环境方法:tearDown()
eclipse 插件也是使用了策略模式
模板方法模式(Template Methid)
在基类方法中定义了类方法的执行过程,而方法是实现是在子类中完成
是扩展功能的最基本模式之一
它是一种“类的行为模式”
它是通过“继承”的方法来实现扩展
基类负责算法的轮廓和骨架
子类负责算法的具体实现
组合VS继承
基于“继承”的模板方法比“组合”更加容易实现
在很多情况下,可以适当使用这种模式
形式
抽象方法
protected abstract void step1();
强制子类实现该步骤
具体方法
protected void doSomething(){...}
子类根据自己的情况决定是否需要覆盖
钩子方法
protected void setUp(){}
空实现 (缺省适配器模式)
子类选择性覆盖
策略模式与模板方法的结合
组合模式
是一种“对象的结构模式”
TestSuite
用树的组合模式遍历树的所有节点(不可用递归)
装饰器模式
提到装饰器模式,不免心生疑问:它跟代理模式有什么区别呢?几番百度之后,大概得到的答案是,代理模式对使用者屏蔽了目标实现,而装饰器模式是使用者指定某个装饰器去装饰某个目标,两者都是使用者设定的。
评论