设计模式学习笔记

简介

有人一直说开发人员,23种设计模式要烂熟于胸,而我没有做到,学习之。

J2EE模式(超越教科书,不在23种以内) 7种

  • 数据传输对象模式
    • 数据传输对象是可以序列化和反序列化的,方便在网络上传输。这种处理数据传输的方式,一般会包含多个字段/属性,这种方式成为数据传输设计模式. DTO
  • 服务定位器设计模式
    • 就是定义一个服务的集合,这个集合具有缓存功能,能够缓存已经实例化的服务,不需要每次都创建新的实例
  • 拦截过滤器模式
    • 集中的请求处理机制
  • 数据访问对象模式
    • DAO模式,实体,访问,接口
  • 组合实体模式
    • 一个实体包含多个实体,通过最外层的实体方法更新内部实体的属性
  • 业务代码模式
    • 表示层和业务层解耦
  • MVC模式
    • 模型,视图,控制器,分层开发

创建型(Creational Patterns) 5种

解决的对象创建的问题

  • 工厂模式(Factory Pattern)
    • 提供一种创建对象的方式
    • 提供统一的接口负载对象的创建,具体的实现类负责创建类的实例,
    • 有多种实现,但是想提供统一接口的场景,适用工厂模式
  • 抽象工厂模式(Abstract Factory Pattern)
    • 生产工厂的工厂,在工厂模式上的基础上更加抽象
  • 单例模式(Singleton Pattern)
    • 单一实例,减少实例不断创建释放造成的资源消耗
  • 建造者模式(Builder Pattern)
    • 建造器,负责复杂对象的创建
  • 原型模式(Prototype Pattern)
    • 对象的缓存,一旦创建直接返回,没有创建才会进行实例化

结构型(Structural Patterns) 8种

  • 适配器模式
    • 两个不兼容接口之间的桥梁,解决兼容性问题
  • 桥接器模式
    • 使用非继承的模式来解决类关系的问题
  • 过滤器模式
    • 实现过滤功能
  • 组合模式
    • 复杂对象,属性可以时对象
  • 装饰器模式
    • 定义独立的类,在类的功能上加上其他的功能,称之为装饰
  • 外观模式
    • 系统的对外展现提供一个组接口,屏蔽内部的复杂实现,目标简单易用,易于理解
  • 享元模式
    • 运行共享技术实现减少对象创建资源消耗的问题,数据库的连接池就是实现的一种
  • 代理模式
    • 加入中间层,实现间接访问

行为型(Behavioral Patterns) 12种

  • 责任链模式
    • 链条式结构,处理消息传递时常用
  • 命令模式
    • 请求或参数抽象为命令对象,新的命令很容易添加
  • 解释器模式
    • 常用在SQL解析符号处理、表达式解析引擎、规则解析
  • 迭代器模式
    • 提供统一的接口,访问集合,不需要集合内部复杂的结构
  • 中介者模式
    • MVC模式中的控制器属于中介者模式,加入中间层,不直接交互
  • 备忘录模式
    • 为了反悔,保存中间状态
  • 观察者模式
    • 一对多关系时,一个发生变化,通知其他关联对象
  • 状态模式
    • 状态决定行为,存储类的状态
  • 空对象模式
    • 一种默认状态,处理默认的情况,提供默认的行为
  • 策略模式
    • 不同策略,封装不同行为的组合,不同的策略,不同的算法,策略可以自由切换非常灵活
  • 模板模式
    • 变和不变分类抽离,封装不变的部分形成模板
  • 访问者模式
    • 数据结构与数据操作分离,稳定的数据结构和易变的操作