架构师训练营第三周总结
已经学了3周了,主要学习了架构师的理念、UML和设计模式,第三周主要讲设计模式。
架构师通过框架让架构落地,而做框架一定要有抽象思维,要符合面向对象的设计原则:开闭原则、依赖倒置原则、里氏替换原则、单一职责原则、接口分离原则。如何满足这些原则呢?主要是通过设计模式,设计模式就是一些解决设计问题的套路,经过前人的总结,命名为设计模式。
一个模式包含四个部分:
模式名称:名正则言顺,主要便于记忆与沟通。
待解问题:为达到设计目的,遇到什么问题?
解决方案:抽象解决方法,元素、关系、职责等的组合
结论:解决方案的利弊,对系统弹性、扩展性、可移植性的影响。
学习模式时要老老实实去研究模式适合的场景、解决方案和利弊等,实际应用中,以达到设计目的为中心灵活运用模式。
工厂模式
解决对具体实现的依赖,通过工厂提供对象,调用方只需要依赖实现的抽象(接口、抽象类)即可,减少耦合性,修改实现或增加实现,都不需要修改调用方。
要做一个排序程序,需要排序器,排序方法,排序对象,比较器等元素,排序方法名可固定用sort,排序器可抽象sorter,而不同的排序算法(冒泡排序、堆排序、快速排序。。。)实现不同的排序器,可扩展,排序对象要满足可排序,如实现compareTo()方法,可比较大小,还需要一个比较器,按字符顺序比较,还数值比较还是倒序与顺序,都通过比较器来决定。如此排序程序几乎可适应所有排序情况和对象。
有3个变化:
1.排序算法:每个排序算法都继承sorter。或者实现sorter接口。
2.排序对象:将排序对象可排序化。
3.比较器:用于对象元素的前后比较。
得到这3个实现,都可以使用工厂模式来获取。
通过使用工厂模式,可以将获取实现抽象出来,因此工厂模式也被很多其他模式所依赖与组合。
单例模式:
一个类只实现一个实例,便于统一管理,减少对象的创建与销毁。
单例尽量只提供服务,不保存状态。
适配器模式:
适配器即是转换,如原来的类不支持现在的需求,需要对其进行转换,增加相应的属性或方法,以适用于现在的需要。
如对List排序,需要增加size属性,get,set方法。那么增加一个类,增加这3个元素。
一种方法是继承原来的类,一种方法是组合原来的类。推荐使用组合方法。
模板方法模式:
定义类的行为模式,一般用继承方法实现。
父类定义必须的方法和属性,子类来实现。
策略模式:
一个过程有多种计算方法,用策略模式替换if/else,也可以在以后扩展,满足开闭原则。
模板方法模式一般用继承实现,策略模式一般用接口实现。
组合模式:
HTML的元素就是一种组合模式。
Windows窗体也是一种组合模式。
装饰器模式:
贴一段代码
第一段:
Moon里有一个对象Dream,Dream里有一个对象You。
第二段:
Dream里有一个对象Moon,Moon里有一个对象You。
其他:
使用配置文件来使框架可配置
Junit的使用
UML使架构可视化
框架使架构落地
设计模式使框架灵活
版权声明: 本文为 InfoQ 作者【王鑫龙】的原创文章。
原文链接:【http://xie.infoq.cn/article/cc7a50a29ed4b84044648dc47】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论