架构师训练营 第三周 学习心得
一,设计模式的定义
1. 什么是设计模式
每种模式都描述了一种问题的通用的解决方案.这种问题在我们的环境中,反复的出现。
设计模式是一种可重复的解决方案。
2. 一个设计模式的四个部分
模式名称: 由少量的字组成,有助于表达我们的设计。
待解决问题: 描述哪些场景需要使用这种设计模式,以及运用模式的环境(上下文)。
解决方案: 描述解决问题的元素(类和对象),他们的关系,职责及合作,这种解决方案是抽象的,他不代表具体的实现。
结论: 运用这种方案所带来的利和弊。主要指它对系统的弹性,扩展性和可移植性的影响。
3. 设计模式的分类
从功能分
创建模式: 对类实例化过程的抽象。
结构模式: 将类或者对象结合在一起形成更大的结构。
行为模式: 对在不同的对象之间划分责任和算法的抽象化。
从方式分
类模式 以集成的方式实现模式,静态的。
对象模式 以组合的方式实现模式,动态的。
二,几种设计模式的说明
1. 简单工厂
定义
提供一个创建对象实例的功能,而无需关系其具体实现,被创建实例的类型可以是接口、抽象类,也可以是具体的类。
类图
示例
运算抽象类
加法
减法
乘法
除法
工厂策略方法
客户端调用
2. 单例模式
定义
负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
类图
单例模式的几种方式
懒汉模式
饿汉模式
双重锁模式
静态内部类单例模式
枚举单例模式
3. 模板方法
定义
模板方法模式,定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。
类图
示例
抽象模板
模板A
模板B
调用
4. 组合模式
定义
组合模式允许你将对象组合成树形结构来表现”部分-整体“的层次结构,使得客户以一致的方式处理单个对象以及对象的组合。
组合模式实现的最关键的地方是——简单对象和复合对象必须实现相同的接口。这就是组合模式能够将组合对象和简单对象进行一致处理的原因。
类图
组合部件(Component):它是一个抽象角色,为要组合的对象提供统一的接口。
叶子(Leaf):在组合中表示子节点对象,叶子节点不能有子节点。
合成部件(Composite):定义有枝节点的行为,用来存储部件,实现在Component接口中的有关操作,如增加(Add)和删除(Remove)。
示例
Component 抽象组件
节点组件 Node
子组件 Child
调用 Client
5. 装饰器模式
定义
允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装
类图
Component(抽象构件):它是装饰类和具体构件的公共父类(一般是接口或者抽象类);
ConcreteComponent(具体构件):具它是抽象构件对象的子类,用来定义具体的构件对象(Component的子类或者具体实现);
Decorator(抽象装饰类):进继承抽象构件,用于给具体的构件添加一些新的职责(一般是一个继承了Component的接口);
ConcreteDecoraror(具体装饰类):实现了抽象装饰类,它负责向构件添加新的职责;
示例
奶茶抽象组件接口
奶茶实现组件类
装饰抽象类
珍珠配料装饰类
红豆配料装饰类
调用
版权声明: 本文为 InfoQ 作者【李君】的原创文章。
原文链接:【http://xie.infoq.cn/article/9dce7daf37d8e2514f6d6563e】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论