「架构师训练营」第 3 周 学习总结
1. 反应式框架Flower
一般处理网络请求,都是一个请求进入容器后,创建一个线程去处理,当并发请求量过多时,线程的切换对于cpu的开销就非常大。即便通过线程池去管理线程,却会造成请求线程阻塞、超时、拒绝等。
Flower基于Akka框架反应式处理,一个线程负责接收并发请求然后交给后台异步处理,然后又可以快速的接收下一个请求,从而实现多路复用的机制。线程没有阻塞等待,而让系统资源得到充分的利用。
由于没有过多了解Flower框架细节,只是印象中,大概明白反应式框架带来的好处。其他细节并未接收到。
2. 设计模式
第二个主题,主要通过一些例子,重温了设计模式。
如果说上一期学习的设计原则是告诉我们设计出来的程序应该是什么样,那么设计模式就是告诉我们应该怎么样去设计程序。
设计模式,通过前辈的经验总结,对编程对象的高度抽象、行为模式的分析、相互之间的关系等进行了分析和总结,从而归纳出来软件设计的一些编码上的最佳实践。
分类
创建模式
对类的实例化过程的抽象。
结构模式
将类或者对象结合在一起形成更大的结构。
行为模式
对在不同的对象之间划分责任和算法的抽象化。
简单工厂
可通过配置文件配置关系,对简单工厂做一些改进。
单例模式
饿汉、懒汉、静态内部类、枚举 等方式。
适配器模式
将一个已有的类(接口)的方法,以目前已经定好的方法(接口)提供出去。
类的适配器很有可能违反了里式替换原则。一般建议使用对象的适配器。
JUnit的设计模式
JUnit的作者之一,也是《设计模式》的作者,所以JUnit中使用了很多经典的设计模式。
以TestCase为例,实现了模版方法模式,子类只需要实现setUp/runTest/tearDown等方法,而调用流程由父类进行控制。
Sevlet中同样实现了模版方法模式,我们自己定义的Servlet一般都会去重写doGet/doPost等方法,这些方法其实在GenericServlet中进行了请求流程处理的定义。
组合模式
树形结构,分为叶子节点还是非叶子节点。在组合模式中,进行父组件方法的调用,通过父组件包含子组件而遍历子组件,完成到子组件的调用。
装饰模式
评论