设计模式默写


  1. 单例:每个类只允许存在一个的对象,如果延迟初始化需要考虑多线程并发出现的问题,还需要考虑未用volatile时对象为空的情况。
  2. 简单工厂:某类不能直接使用构造函数构造,而是需要在另一个类中调用static静态方法构造。
  3. 工厂方法:同上,但是方法不是static的了,要先实例化一个对象再在对象中调用。
  4. 抽象工厂:不是很记得了,只记得对象家族,建议多复习。(大致为创建出来的抽象对象为很多其他对象的工厂。)
  5. 生成器:不是直接构造对象,而是允许一步步的构建对象,例如StringBuilder类。
  6. 原型模式:prototype,大致为能以某个对象为原型复制一份一样的,例如clone()方法。
  1. 责任链:将能处理问题的对象组成一个链表,问题在链表中迭代查询直到遇见能处理的为止。
  2. 命令:将想要运行的命令变成一个对象而不是及时运行,交给其他的对象到该运行时再运行,例如Runnable啥的。
  3. 解释器:将语言解释为逻辑上的步骤并且可以自由组合,不是特别记得了(为语言创建解释器,通常由语言的语法和语法分析来定义。)
  4. 迭代器:可以迭代集合中的元素而不用去管其实现细节,hasNext和next。
  5. 中介者:很多对象相互直接都有关系,而中介者直接充当中介建立他们之间的相互关系。
  6. 备忘录:储存一份对象的备忘,例如具体数据和细节防止丢失。例如Serialize。
  7. 状态:内在状态变化而发生了好像类发生了变化一样。
  8. 策略:类似于spring的IoC,将核心部分留出来交给其他的类来实现,例如Comparator。
  9. 模版方法:有个算法模版,而对于不同的对象运行不同的算法细节,例如sort()。
  10. 访问者:不是很懂,好像是能动态的给每个访问者增加方法。
  1. 适配器:屏蔽上层的细节,为使用者提供统一的接口,例如很多SQL组件。
  2. 桥接:不记得了。(将抽象与实现分离开来,使它们可以独立变化。)
  3. 组合:在新的类中组合多个别的对象形成新的功能。树形结构,通过操作一个对象来操作一组对象。
  4. 装饰:通过继承对类的功能进行拓展。
  5. 外观:将很多细节方法统一为一个方法,方便使用。
  6. 享元:共享一些细粒度的对象。
  7. 代理:反射,不记得了。(控制对其他对象的访问。)

过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。