`

设计模式简单总结

    博客分类:
  • Java
 
阅读更多

20140118133026285

 

 

一 、创建型模式

 

  1.1单例模式

 

   设计原则:无

 

   介绍:在整个应用中只有一个对象

 

  1.2简单工厂
simplefactory

 

  常用场景:需要在一堆产品中选择其中一个产品
  介绍:通过工厂类去创建产品,调用者不用直接去创建对象,并封装了对象的创建细节。

 

  设计原则:遵循单一职责 、违背开闭原则(生成不同对象,需要实现不同的工厂类,扩展性不好)

 

 1.3工厂方法模式

 

   factoryMethod

 

   常用场景:一种场景是希望工厂与产品的种类对客户端保持透明,给客户端提供一致的操作,另外一种是不同的工厂和产品可以提供客户端不同的服务或功能
   介绍:工厂方法模式又叫虚拟构造子模式或者多态性共存模式,工厂模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中

 

   设计原则:单一指责,依赖倒置,开闭原则

 

 
 1.4抽象工厂

 

  abstractFactory

 

    常用场景:需要一个接口可以提供一个产品族,且不必知道产品的具体种类
    介绍: 工厂方法模式与抽象工厂模式最大的区别在于,在工厂方法模式中,工厂创造的是一个产品,而在抽象工厂模式中,工厂创造的是一个产品族。

 

    设计原则:单一指责,依赖倒置,开闭原则

 

1.5建造者模式

 

builder

 

    常用场景:需要构建一批构建过程相同但表示不同的产品,而构建过程非常复杂

 

    介绍:建造模式是对象的创建模式。建造模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。

 

   设计原则: 遵循单一职责、开闭原则

 

1.6 原型模式

 

prototype
   常用场景:需要在运行时动态的创建指定实例种类的对象,或是需要复用其状态

 

   介绍:通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象

 

   设计原则:无

 

二、结构模式

 

  2.1 代理模式

 

proxy
  常用场景:需要修改或屏蔽某一个或若干个类的部分功能,复用另外一部分功能,可使用静态代理,若是需要拦截一批类中的某些方法,在方法的前后插入一些一致的操作,假设这些类有一致的接口,可使用JDK的动态代理,否则可使用cglib

 

  介绍:代理模式给某一个对象提供一个代理对象,并由代理对象控制原有对象的引用
  设计原则:体现功能复用

 

 2.2适配器模式

 

  adapter、、

 

   常用场景:需要使用一个类的功能,但是该类的接口不符合使用场合要求的接口,可使用定制适配器,又或者是有一个接口定义的行为过多,则可以定义一个缺省适配器,让子类选择性的覆盖适配器的方法

 

   介绍:把一个类的接口变换成客户端所期待的另一种结构,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作
   原则: 遵循开闭原则、体现功能复用

 

2.3装饰器模式

 

decorator

 

  常用场景:一个类需要动态的添加功能,且这些功能可以相互叠加
  介绍:装饰器模式又名包装模式,装饰器模式用以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案

 

  设计原则: 遵循迪米特、单一职责、开闭原则,破坏里氏替换,体现功能复用

 

2.4 桥接模式

 

bridge

 

 常用场景:一个对象有多个维度的变化,需要将这些维度抽离出来,让其独立变化

 

 介绍:业务抽象角色引用业务实现角色,或者说业务抽象角色的部分实现是由业务实现角色实现完成的。
 设计原则: 遵循单一职责、迪米特、开闭原则,体现功能复用

 

2.5 组合模式

 

composite

 

   常用场景:当有一个结构可以组合成树形结构,且需要向客户端提供一致的操作接口,使得客户端操作忽略简单元素与复杂元素

 

   介绍:有时又叫做部分-整体模式。组合模式将对象组织到树结构中,可以用来描述整体与部分的关系。组合模式可以使客户端将单纯元素与复合元素同等看待

 

   设计原则: 遵循依赖倒置、开闭原则,破坏接口隔离

 

2.6 享元模式

 

flyweight

 

   常用场景:一些状态相同的对象被大量的重复使用
   介绍:享元模式以共享方式高效的支持大量的细粒度对象
2.7 门面模式

 

facade

 

  常用场景:一个子系统需要对外提供服务
  介绍:外部与子系统的通信(交互)必须通过统一的门面对象进行

 

  设计原则:遵循迪米特

 

三、行为型模式

 

 3.1 观察者模式

 

 observer

 

 常用场景:需要将观察者与被观察者解耦或者是观察者的种类不确定

 

 介绍:又叫发布订 模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察这对象,使它们能够自动更新自己
 设计原则:遵循迪米特、开闭原则

 

3.2 模板方法模式

 

 templateMethod

 

 常用场景:一批子类的功能有可提取的公共算法骨架

 

 介绍:准备一个抽象类,将部分逻辑以抽象方法形式让子类去实现,不同哦能的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现,这就是模板方法模式的用意
 设计原则:破坏里氏替换,体现功能复用

 

3.3 命令模式

 

command
  常用场景:行为的请求者与行为的处理者耦合度过高
介绍:命令模式把一个请求或在操作封装到一个对象中,命令模式允许系统使用不同的 请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能
  设计原则:遵循迪米特、开闭原则

 

3.4 状态模式

 

state
 常用场景:一个对象在多个状态下行为不同,且这些状态可互相转换

 

 介绍:状态模式允许一个对象在其内部状态改变的时候改变其行为,这个对象唉看上去就像是改变了它的类一样
 设计原则:遵循单一职责、依赖倒置、开闭原则

 

3.5责任链模式

 

chainOfResponsibility

 

 常用场景:一个请求的处理需要多个对象当中的一个或几个协作处理

 

 介绍:很多对象是由每一个对象对其下家的引用而连接起来形成一条链,请求在这个链上传递,直到链上的某一个对象囧丁处理此请求,发出这个请求的客户端并不知道链上的哪个对象最终处理了这个对象,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任
 设计原则:遵循迪米特

 

3.6 解释器模式

 

interpreter
 常用场景:有一种语言被频繁的使用
  介绍:解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子
 设计原则:遵循单一职责

 

3.7中介者模式

 

mediator
 常用场景:一个系列的对象交互关系十分复杂

 

 介绍:中介者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合
 设计原则:遵循迪米特,破坏单一职责
3.8 访问者模式

 

  vistor
 常用场景:作用于一个数据结构之上的操作经常变

 

 介绍:访问者模式的目地是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变
 设计原则:遵循倾斜的开闭原则

 

3.9策略模式

 

strategy
 常用场景:算法或者策略需要经常替换
  介绍:其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换
 设计原则:遵循单一职责、依赖倒置、迪米特、开闭原则

 

3.10备忘录模式
memento

 

 常用场景:需要在对象的外部保存该对象的内部状态
 介绍:又叫快照模式,备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装性的条件下,将一个对象的状态捕捉,并外部化存储起来,从而可以在将来适合的时候把这个对象还原到存储起来的状态
 设计原则:遵循迪米特、开闭原则

 

3.11迭代器模式

 

iterator
 常用场景:需要迭代访问一个聚合对象中的各个元素,且不暴露该聚合对象内部的表示

 

 介绍:迭代器模式可以顺序的访问一个聚集中的元素而不必暴露聚集的内部表象
 设计原则:遵循迪米特

  转载自并发编程网 – ifeve.com

感谢 ifeve

 
分享到:
评论

相关推荐

    Java23种设计模式(总结)

    有感于设计模式在日常开发中的重要性,同时笔者也自觉对设计模式小有心得,故笔者*写二十三种设计模式的简单例子、 并整理二十三种设计模式的理论部分,综合汇总成这份Java设计模式(疯狂J*va联盟版),希望对大家...

    Java23种设计模式(总结).doc

    有感于设计模式在日常开发中的重要性,同时笔者也自觉对设计模式小有心得,故笔者*写二十三种设计模式的简单例子、 并整理二十三种设计模式的理论部分,综合汇总成这份Java设计模式(疯狂J*va联盟版),希望对大家...

    基于Java的设计模式大作业绘图系统【六种设计模式+文档】.zip

    本系统基于六种设计模式,运用到的设计模式有备忘录模式,...设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。

    java软件设计模式期末总结

    简单整理,仅供参考。适用于期末考试。

    几种常用的设计模式介绍总结

    几种常用的设计模式总结,包括简单的介绍设计模式的起源、分类、介绍。

    lua设计模式总结

    1、简单工厂模式lua实现 2、工厂方法模式lua实现 3、原型模式lua实现 4、建造者模式lua实现 5、单例模式lua实现 6、抽象工厂模式lua实现 结构型模式 1、装饰模式lua实现 2、代理模式lua实现 3、外观模式lua实现 4、...

    Java 23种设计模式(总结).doc

    本文档主要是为了向读者介绍二十三种设计模式,包括模式的描述,适用性,模式的组成部分,并附带有简单的例 子和类目,目的是为了让读者了解二十三种设计模式,并能方便的查阅各种设计模式的用法及注意点;...

    设计模式总结与分析

    Sunny在CSDN技术博客中陆续发表了100多篇与设计模式学习相关的文章,涵盖了七个面向对象设计原则和24个设计模式(23个GoF设计模式 + 简单工厂模式),为了方便大家学习,现将所有文章的进行了整理,方便大家下载阅读...

    简单工厂设计模式

    Java 设计模式 总结了经典设计模式之一的简单工厂设计模式,内涵类图,UML介绍.

    C++《设计模式》总结

    值得阅读的好书, 在37页的厚度中, 以UML图形方式, C++代码示例简单明了的介绍了全部的设计模式, 颇为不易. 文中内容摘抄: 首先感谢:《设计模式》一书的作者Gamma,Helm,Johnson和Vilssides 前言 本文是我阅读...

    设计模式笔记(包含所有设计模式)个人总结提炼笔记

    设计模式是一种解决软件设计问题的经验总结,是在软件开发过程中经过反复验证的最佳实践。设计模式提供了一套通用的解决方案,可以帮助开发人员更好地组织和设计代码,提高代码的可读性、可维护性和可扩展性。 设计...

    自己总结的设计模式笔记

    把书上介绍的设计模式总结了一下,可能不全,但常用的在文档中都有描述,描述的很简单适合初学者学习,老鸟就别在这耽误事了

    人人都懂设计模式.epub

    《人人都懂设计模式:从生活中领悟设计模式:Python实现》带你一起从生活的角度思考设计模式,以轻松有趣的小故事开始,由浅入深地讲解每一种模式,思考每一种模式,总结每一种模式!力求用更通俗的语言阐述难懂的...

    Java设计模式期末答辩知识点总结.xmind

    java设计模式期末答辩知识点总结

    c++语言实现的23种设计模式.pdf

    文档讲设计模式3大类,创建型模式,结构型模式,行为模式,然后对每一种模式进行详细讲解,以及举例当前模式适合的场景,最重要的是还有各种模式的简单代码实现。我个人最开始接触设计模式也是从改书开始的,以前不...

    Java的23种设计模式(疯狂Java总结).pdf

    Java的23种设计模式介绍并附有简单的例子,作者为:杨恩雄

    JAVA设计模式(中文).chm与设计模式.chm

    很不错,简单明了。总结的很不错,适合快速了解设计模式。 其他相关资料请访问:http://download.csdn.net/justdo2008

    Java23中设计模式总结

    本份帮助文档主要是为了向读者介绍二十三种设计模式,包括模式的描述,适用性,模式的组成部分,并附带有简单的例子和类*,目的是为了让读者了解二十三种设计模式,并能方便的查阅各种设计模式的用法及注意点。

    java常用设计模式集锦

    java常用的设计模式一个简单总结,如工厂模式、单例模式、代理模式等等。(楼主也是未入门的菜鸟,如有错误请及时联系楼主更正,谢谢!)

Global site tag (gtag.js) - Google Analytics