架构师训练营第三周总结
本周印象深刻的几个点
反应式编程
基于Akka的反应式编程框架:Flower
Flower采用了反应式编程的思想,能够使用更少的服务端线响应更多的客户端连接
这种方式一方面可以扩大系统的吞吐量,另一方面可以节省服务端线程切换的开销(因为线程少),在部分场景下,也可以提高服务端的性能。
反应式编程的实现方式
不要自己重复造轮子,目前已经有比较成熟的第三方组件,比如Akka。我们要做的是在第三方组件上封装自己的框架,去适应自身项目的需要。
反应式编程存在的坑
所有涉及到IO的地方都需要改成异步调用,否则会将线程阻塞的问题放大。
模板方法与策略模式
模板方法与策略模式都可以用来解决同一类问题,就是分离高层算法和底层实现的细节。
模板方法的实现思路是基于对象继承,在父类中定义算法,由子类实现细节。
优点:封装不变的部分,扩展可变部分,符合开闭原则。
缺点:子类与父类强绑定,某种程度上违反了依赖倒置原则(实现应该依赖于抽象)。
策略模式用另外一种思路来解决相同的问,即通过依赖倒置,倒置了算法与实现的关系,使得实与算法之间解耦。
策略模式也有自己的缺点:增加了代码的复杂性,引入了更多类
组合模式与装饰模式
组合模式和装饰模式的类图很像,咋一看还以为是同一种模式,但事实上它们是用来解不同场景的问题。
组合模式:用来方便的处理树状结构的对象,同时组合模式不会改变对象的方法调用。
装饰模式:在不修改现有对象的情况下为其添加新的职责(对其进行装饰),装饰模式会对被装饰对象的方法调用进行修饰,但在修饰的同时不会改变被修饰方法的内容。
两种模式的关键差异点,在于Component类的子类Composite(组合模式)/Decorator(装饰模式)如何处于与Component类的依赖。
Composite(组合模式)类会保存Component类的集合(List),在执行时遍历集合中所有的对象。
Decorator(装饰模式)类只保存一个Component类对象,并在执行时对Component类的方法调用进行修饰。
版权声明: 本文为 InfoQ 作者【W_T】的原创文章。
原文链接:【http://xie.infoq.cn/article/92215ccf4585cf04d3909cd70】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论