1、观察者模式
对象间存在一对多关系,如果一个对象被修改时,会自动通知它的依赖对象(老鼠狗猫)
2、建造者模式
使用对各简单的对象一步一步构造出一个复杂对象(构造KFC完整套餐)
3、策略模式
针对一组算法,将每一个算法封装到同一个接口的独立实现类中,使他们可以互换
包括三种角色:上下文、具体策略、抽象策略
抽象策略是接口
4、代理模式
为其他对象提供一个代理以控制对这个对象的访问
权限控制设计:不同级别的用户对同一对象拥有不同的访问权利或某个客户端不能直接操作到某个对象,但又必须和那个对象有所互动
5、备忘录模式
当需要让对象返回到之前的状态(撤销的实现)
6、命令模式
将一系列的请求命令封装起来,不直接调用真正执行者的方法,这样比较好扩展。
7、模板方法模式
在一个方法中定义一个算法骨架,而将一些步骤延迟到子类中。
模板方法使得子类可以在不改变算法结构的情况下,重写定义算法中的某些步骤(不同数据库操作)
8、责任链
可以为某个请求创建一个对象链,每个对象依次检查请求并处理或将其传递(请假)
9、访问者模式
将数据结构和数据处理分开,单独定义一个访问者类,去完成对数据的处理
购物车的设计:顾客访问商品,收银员访问商品
奖励评审系统:老师,学生访问
10、设计模式优点
适应需求变化
11、创建型模式关注对象创建
12、享元模式
通过共享(对象复用)以便有效支持大量细颗粒对象
共享网络设备模拟:交换机、集线器等多台终端计算机可连接同一台网络设备
13、工厂模式
简单工厂:由接口直接负责获取产品
工厂方法:客户必须指导要什么产品,接口子类负责获取产品
抽象工厂:客户不知道获取什么,由接口判断调用哪个子类,通过子类获取(强调一系列相关产品的接口)
没有静态工厂
14、外观模式
为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这个子系统更加容易使用
15、行为类模式
描述多个类或对象之间怎样相互协作完成单个对象无法单独完成的任务
类行为模式:采用继承机制来在类间分派任务
对象行为模式:组合或聚合在对象间分配任务
16、 适配器模式
将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的类能一起工作(系统适配性差)
17、桥接模式
将抽象与实现分离,使得他们可以独立变化。他们的组合关系代替继承关系来实现(毛笔3种型号绘制5种颜色)
18、装饰模式
不影响其他对象情况下,动态的给对象增加一些功能
19、结构型模式
代理、适配器、桥接、装饰、外观、享元、组合
20、外观模式
为多个复杂子系统提供统一接口,使得子系统更加容易访问(一个电源控制几种电器)
21、组合模式
将对象组合成树状层次结构,使用户对单个对象和组合对象具有一致的访问性
22、设计模式解决问题
同一问题的不同表象
23、原型模式
可以利用一个对象,快速生成一批对象
24、设计模式两个主题
系统复用与系统扩展