写点什么

架构师训练营第三周学习总结

用户头像
fenix
关注
发布于: 2020 年 06 月 24 日

第三周主要讲解了设计模式及其应用

模式的组成部分

1.模式名称:名正则言顺,主要便于记忆与沟通。

2.待解问题:为达到设计目的,遇到什么问题?

3.解决方案:抽象解决方法,元素、关系、职责等的组合

学习模式时,需要从模式解决需要解决的问题出发,分析模式的解决方案的利弊,从而能够在实际工作中,灵活的应用设计模式去解决实际问题。

工厂模式

解决对具体实现的依赖,通过工厂提供对象,调用方只需要依赖实现的抽象(接口、抽象类)即可,减少耦合性,修改实现或增加实现,都不需要修改调用方。

通过使用工厂模式,可以将获取实现抽象出来,因此工厂模式也被很多其他模式所依赖与组合。

单例模式

在程序运行过程中只存在一个实例。

单例尽量只提供服务,不保存状态。

适配器模式

适配器即是转换,如原来的类不支持现在的需求,需要对其进行转换,增加相应的属性或方法,以适用于现在的需要。

如对 List 排序,需要增加 size 属性,get,set 方法。那么增加一个类,增加这 3 个元素。

一种方法是继承原来的类,一种方法是组合原来的类。推荐使用组合方法。

模板方法模式

定义类的行为模式,一般用继承方法实现。

父类定义必须的方法和属性,子类来实现

策略模式

解决问题

系统需要在多种算法中选择一种

解决方案

重构系统时,将条件语句转换成对于策略的多态调用

优缺点

对比模板方法模式:

1.将使用策略的人和策略的具体实现分离

2.策略的对象可以自由组合

可能存在的问题:

策略模式仅仅封装了”算法的具体实现“,方便添加和替换算法。但它并不关心何时使用何种算法,这个必须由调用者决定。

组合模式

用于处理树型结构的数据上。

装饰器模式

装饰器模式和模板方法模式、策略模式的比较

1.装饰器保持对象的功能不变,仅扩展其外围的功能

2.模板方法和策略模式则保持算法的框架不变,而扩展其内部实现

装饰器模式和继承的比较:都可以用来扩展对象的功能,但装饰器模式是动态扩展,而继承则是当类之间的关系确定后,无法改变扩展的方向

装饰器模式可以任意组合,但这也是装饰器更加复杂,甚至有可能组合出荒谬的结


用户头像

fenix

关注

还未添加个人签名 2018.03.02 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第三周学习总结