设计模式——初篇

  设计模式隶属于面向对象设计领域,是设计者们在日常工作中遇到的各种困难以及解决方案的汇总。

1、知识体系

1.1 创建型模式

创建型模式主要的功能就是创建和复用对象。总共有5种类型,每种类型面对的问题是不同的。

  1. 单例模式:确保在一个JVM中只存在一个对象实例。
  2. 工厂模式:通过提供额外的工厂类,”封装”了复杂的类体系结构,简化了框架的使用。它有两种模式,工厂方法和抽象工厂。。
  3. 构建者模式:通过提供额外的构建者类,”封装”了复杂的类创建过程。
  4. 原型模式: 通过prototype原型链对象创建新对象,达到复用公共属性和方法的目的

1.2 结构性模式

  结构型模式主要的功能是通过添加额外的类来满足新的功能要求。掌握新增类的职责,理解需求是掌握它们的关键。

  1. 桥接模式:桥接模式是将抽象与其具体实现进行解耦。
  2. 适配器模式:通过提供额外的适配器类,解决新接口对旧接口的兼容性问题。解决不同厂商之间接口无法协同的问题。
  3. 组合模式:组合模式是为了在某些业务场景下无区别对待容器类和单个类。
  4. 装饰器模式:在不修改原类的情况下,通过添加新的装饰器类,对原有功能进行扩展。
  5. 享元模式:在大量创建相似对象时,将对象的”common state”或”share state”与”internal state”或”special state”分离。将common state封装为一个对象,并共享给所有对象,以此达到节约内存的目的。
  6. 代理模式:将调用类方法的操作转换为调用代理类的方法。

 1.3 行为型模式

  行为型模型大部分模拟生活中的应用场景,理解思想,角色,角色之间的关系,角色之间的行为是掌握它们的关键。较为典型的几种思想,"duck-typing","整合",“解耦”。

  1. 迭代器模式:是”duck-typing”的一种应用场景,核心思想是忽略其类型和数据结构,抽象它们的公共行为。迭代器模式忽略集合类的类型和数据结构,抽象它们的遍历行为,并将遍历的职责委托给迭代器类(Iterator)
  2. 策略模式:为了实现相同的功能,提出了不同的算法,策略模式的目的是用户可以动态的在这些算法中来回切换。
  3. 职责链模式:是为了高效,合理的处理请求。为高效制定规范的流程,为合理,设置过滤器,拦截器,权限等等限制措施
  4. 备忘录模式:记录对象的历史状态,这样做的目的是对象可以回滚到之前的历史状态。
  5. 门面模式:为了系统的易用性,提供一个统一的接口整合所有子系统的功能。
  6. 模板模式:规范定义流程,并将公共流程和独立流程分离,在父类中实现公共流程,在具体的子类中实现独立流程,不同的子类提供各自独立流程的实现方式。
  7. 命令模式:为了将请求发起者和请求处理者解耦,从而提高请求的处理效率。
  8. 状态模式:基于对象状态的改变,其行为也发生改变。模式本身的类结构并不是很复杂,难点在于对类的认知。
  9. 观察者模式:将subject的动态通知给Observer。在程序上动态体现为内部状态的改变,即某个属性值发生改变。
  10. 访问者模式:在不修改原始类结构的基础上,将原始类的某种功能委托给访问者类来实现
  11. 中介者模式:解耦不同对象之间的交互,提供统一的中介者来负责对象之间的交互。
  12. 解释器模式:将一种语法转换为另外一种语法,并提供相应的转换规则和解释器。

2、工具

  • StartUML:很方便的,很容易上手的一个画UML图的工具,官网下载的话如果速度较慢,使用FQ软件,没有FQ软件的话,搜索各种云盘估计也会有。
  • RationalRose:IBM出品,大厂出品,必属精品,需要破解。个人建议FQ,国内的下载懂的都懂。2003版安装教程:https://www.jianshu.com/p/7e667861dd78

3、参考资料

  • oodesign:http://www.oodesign.com/
  • 书籍《Java Design Pattern》
  • 书籍《Head First Design Pattern》
  • 书籍《Design Patterns: Elements of Reusable Object-Oriented Software》
posted @ 2020-02-19 10:32  蜗牛旅行1899  阅读(130)  评论(0编辑  收藏  举报