架构师训练营学习总结(第三周)
面向对象的设计模式
什么是设计模式
设计模式是一种问题的通用解决方案,且是可重复使用的。
在学习设计模式时,应从4个方面来学习:
a. 模式名称
b. 待解问题:模式适合解决的问题,即何时使用该模式
c. 解决方案:模式如何解决问题,模式的组成元素以及各元素之间的关系、职责等
d.结论:模式的利与弊
模式分类
功能划分:
创建型:对类的实例化进行抽象
结构型:将类或者对象结合在一起形成更大结构
行为型:对在不同对象之间划分责任和算法的抽象化
方式划分:
类模式:继承方式实现模式,静态
对象模式:组合方式实现模式,动态
简单工厂
待解问题:生产什么产品的决定权直接交到了客户手中,然后客户在输入自己的需求,得到最终的结果
解决方案:
1: 工厂类 :完成具体产品创建
2.抽象产品类:定义产品规范,描述产品特性和主要功能
3.具体产品类:实现抽象产品定义的接口,由工厂类创建
结论:
优点:
client不在依赖具体的产品实现
对client实现OCP--当增加具体产品时,不需要更改client代码
缺点:
对工厂类不符合OCP--当增加具体产品时,需要更改工厂代码
单例模式
待解问题:保证只产生一个实例
解决方案:
单例类
结论:
优点:
只有一个实例,避免频繁创建和销毁实例的带来的性能损失
当多个用户使用这一个实例时,便于统一控制
缺点
适配器模式
待解问题:需要用到的接口与我们希望的接口不一样
解决问题:
目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。
适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。
适配器(Adapter)类:它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口,让客户按目标接口的格式访问适配者。
有类的适配模式和对象的适配器模式
结论:
优点
客户端通过适配器可以透明地调用目标接口。
复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类。
将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题。
缺点
对类适配器来说,更换适配器的实现过程比较复杂。
评论