架构师训练营第三周学习总结
第三周主要讲解了设计模式及其应用
模式的组成部分
1.模式名称:名正则言顺,主要便于记忆与沟通。
2.待解问题:为达到设计目的,遇到什么问题?
3.解决方案:抽象解决方法,元素、关系、职责等的组合
学习模式时,需要从模式解决需要解决的问题出发,分析模式的解决方案的利弊,从而能够在实际工作中,灵活的应用设计模式去解决实际问题。
工厂模式
解决对具体实现的依赖,通过工厂提供对象,调用方只需要依赖实现的抽象(接口、抽象类)即可,减少耦合性,修改实现或增加实现,都不需要修改调用方。
通过使用工厂模式,可以将获取实现抽象出来,因此工厂模式也被很多其他模式所依赖与组合。
单例模式
在程序运行过程中只存在一个实例。
单例尽量只提供服务,不保存状态。
适配器模式
适配器即是转换,如原来的类不支持现在的需求,需要对其进行转换,增加相应的属性或方法,以适用于现在的需要。
如对 List 排序,需要增加 size 属性,get,set 方法。那么增加一个类,增加这 3 个元素。
一种方法是继承原来的类,一种方法是组合原来的类。推荐使用组合方法。
模板方法模式
定义类的行为模式,一般用继承方法实现。
父类定义必须的方法和属性,子类来实现
策略模式
解决问题
系统需要在多种算法中选择一种
解决方案
重构系统时,将条件语句转换成对于策略的多态调用
优缺点
对比模板方法模式:
1.将使用策略的人和策略的具体实现分离
2.策略的对象可以自由组合
可能存在的问题:
策略模式仅仅封装了”算法的具体实现“,方便添加和替换算法。但它并不关心何时使用何种算法,这个必须由调用者决定。
组合模式
用于处理树型结构的数据上。
装饰器模式
装饰器模式和模板方法模式、策略模式的比较
1.装饰器保持对象的功能不变,仅扩展其外围的功能
2.模板方法和策略模式则保持算法的框架不变,而扩展其内部实现
装饰器模式和继承的比较:都可以用来扩展对象的功能,但装饰器模式是动态扩展,而继承则是当类之间的关系确定后,无法改变扩展的方向
装饰器模式可以任意组合,但这也是装饰器更加复杂,甚至有可能组合出荒谬的结
评论