架构培训 -03 学习总结 设计模式
1.什么是设计模式
每一种模式都描述了一种问题的通用解决方案。这种问题在我们的环境中,不停的出现。
设计模式是一种可重复使用的解决方案。
一个设计模式的四部分:
模式的名称 - 由少量的字组成的名称,有助于我们表达我们的设计。
待解问题 - 描述了何时需要运用这种模式,以及用模式的环境(上下文)。
解决方案 - 描述了组成设计的元素(类和对象)、它们的关系 、职责以及合作。但这种解决方案是抽象的,它不代表具体的实现。
结论 - 运用这种方案所带来的利和弊。主要是指它对系统的弹性、扩展性和移植性的影响。
1.1设计模式的分类
1.1.1按功能分
创建模式 - 对类的实例化过程的抽象。
结构模式 - 将类或者对象结合在一起形成更大的结构。
行为模式 - 对在不同的对象之间划分责任和算法的抽象化。
1.1.2按方式分
类模式 - 以继承的方式实现模式,静态的。
对象模式 - 以组合的方式实现模式,动态的。
2、常见设计模式
在这次学习设计模式中,老师通过场景示例的方式引入常见的一些设计模式,从理解上有种层层递进的感受,映像深刻。
2.1简单工厂
2.1.1解决什么问题?
使client不再依赖Sorter的具体实现,对client来说符合了开闭原则(OCP).
2.1.2利弊分析
利: 对client来说符合了开闭原则(OCP)
弊: 如果需要更改Sorter,SorterFactory需要做修改,不符合OCP。(可以通过配置文件的方式进行配置具体的Sorter实现,从而让SorterFactory满足OCP。)
2.2单列模式
比较简洁的实现代码(5行代码)
2.2.1解决什么问题
只提供一个实例即可,解决了没有必要的资源浪费和统一控制资源的需求。
2.2.2利弊分析
利:1、只有一个实例,可以减少实例频繁创建和销毁带来的资源消耗 --解决性能需求
2、当多个用户使用这个实例的时候,便于统一控制(比如打印机对象)--解决功能需求
2.3适配器模式(Adapter)
2.3.1解决什么问题
系统需要使用现有的类,而这个类的接口与我们所需要的不同时,使用适配器模式来解决。
2.3.2利弊分析
暂无
2.4模板模式
模板模式是扩展功能的最基本模式之一
它是一种“类的形式模式”
2.5策略模式
策略模式是扩展功能的另一种最基本的模式
它是一种“对象的行为模式”
它通过“组合”的方法来实现扩展。
2.5.1应用场景
系统需要在多种方式中选择一种的时候
重构系统的时候--将if else条件语句转换成对于策略的多态性调用。
2.5.2优缺点
优点:(和模板模式对比)
将使用策略的人与策略的具体实现进行分离
策略对象可以自由组合
缺点:
策略模式仅仅封装了“算法具体的实现”,方便添加和替换算法。但他不关心何时使用哪种算法,这个必须由客户端决定
2.6组合模式(Composite)
是一种“对象结构模式”
2.7装饰器模式(Decorator)
是一种“对象结构模式”
2.7.1应用场景
想要透明并且动态的给对象添加新的功能而不影响其他对象
给对象添加的职责在未来可能会发生变化
2.7.2优缺点
优点:
扩展功能强,相比继承来说更灵活。继承的话会导致子类个数增加。而装饰者模式不会出现这种情况。
可以对一个对象进行多次装饰,创造出不同行为的组合,得到功能更加强大的对象。
具体构建类和具体装饰类可以独立变化,用户可以根据需要自己增加新的构件子类和具体装饰类。
缺点:
装饰模式会产生比使用继承关系更多的对象,更多的对象会使得查错变得困难。
评论