`
long254229962
  • 浏览: 8817 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
社区版块
存档分类
最新评论

设计模式笔记(转载)

阅读更多
   创建型模式:
    Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
    Builder:将一个复杂对象的构件与它的表示分离,使得同样的构建过程可以创建不同的表述。
    Factory Method:定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使一个类的实例化延迟到其子类。
    Prototype:用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。
    Singleton:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
    结构型模式:
    Adapter:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
    Bridge:将抽象部分与它的实现部分分离,使它们都可以独立地变化。
    Composite:将对象组合成树型结构以表示“部分-整体”的层次结构。Composite使得客户对单个对象和复合对象的使用具有一致性。
    Decorator:动态地给一个对象添加一些额外的职责。就扩展功能而言,Decorator模式比生成子类方式更为灵活。
    Facade:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
    Flyweight:运用共享技术有效地支持大量细粒度的对象。
    Proxy:为其他对象提供一个代理以控制对这个对象的访问。
    行为型模式:
    Chain of Responsibility:为解除请求的发送者和接受者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。
    Command:将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。
    Interpreter:给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
    Interator:提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。
    Mediator:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使器耦合松散,而且可以独立地改变它们之间的交互。
    Memento:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到保存的状态。
    Observer:定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。
    State:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。
    Strategy:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。
    Template Method:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
    Visitor:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。






设计模式主要分三个类型:创建型、结构型和行为型。
其中创建型有:
    一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点
    二、Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。
    三、Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类。
    四、Builder,建造模式:将一个复杂对象的构建与他的表示相分离,使得同样的构建过程可以创建不同的表示。
    五、Prototype,原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。
行为型有:
    六、Iterator,迭代器模式:提供一个方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示。
    七、Observer,观察者模式:定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知自动更新。
    八、Template Method,模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,TemplateMethod使得子类可以不改变一个算法的结构即可以重定义该算法得某些特定步骤。
    九、Command,命令模式:将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队和记录请求日志,以及支持可撤销的操作。
    十、State,状态模式:允许对象在其内部状态改变时改变他的行为。对象看起来似乎改变了他的类。
    十一、Strategy,策略模式:定义一系列的算法,把他们一个个封装起来,并使他们可以互相替换,本模式使得算法可以独立于使用它们的客户。
    十二、China of Responsibility,职责链模式:使多个对象都有机会处理请求,从而避免请求的送发者和接收者之间的耦合关系
    十三、Mediator,中介者模式:用一个中介对象封装一些列的对象交互。
    十四、Visitor,访问者模式:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这个元素的新操作。
    十五、Interpreter,解释器模式:给定一个语言,定义他的文法的一个表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
    十六、Memento,备忘录模式:在不破坏对象的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
结构型有:
    十七、Composite,组合模式:将对象组合成树形结构以表示部分整体的关系,Composite使得用户对单个对象和组合对象的使用具有一致性。
    十八、Facade,外观模式:为子系统中的一组接口提供一致的界面,fa?ade提供了一高层接口,这个接口使得子系统更容易使用。
    十九、Proxy,代理模式:为其他对象提供一种代理以控制对这个对象的访问
    二十、Adapter,适配器模式:将一类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作那些类可以一起工作。
    二十一、Decrator,装饰模式:动态地给一个对象增加一些额外的职责,就增加的功能来说,Decorator模式相比生成子类更加灵活。
    二十二、Bridge,桥模式:将抽象部分与它的实现部分相分离,使他们可以独立的变化。
    二十三、Flyweight,享元模式

   23种设计模式要在这里详细的都说一遍内容实在太多了啊,推荐你一本好书《软件秘笈:设计模式那点事》,里面讲解的23中设计模式例子很生动,容易理解,还有JDK中设计模式应用情况,看了收获挺大的!百度里面搜“设计模式”,第一条中设计模式百度百科中就有首推该图书,浏览量在20几万以上的,不会错的。
分享到:
评论

相关推荐

    Google软件测试之道--学习笔记--转载

    为了达到有效的质量保证,Google强调了测试人员需要具备一定的技术能力,包括编写和审查代码、设计测试用例、执行自动化测试和探索性测试等。其中,探索性测试是Google测试策略中重要的一环,它强调测试人员在没有...

    java8集合源码分析-Notes:笔记

    设计模式 编程规范 开发框架 前端框架 后端框架 服务器软件 Web服务器 Web应用服务器 操作系统 计算机基础知识 Linux基础 Linux进阶 Linux优化 数据库体系 Oracle DB2 Mysql 开发工具 集成开发工具 代码管理工具 ...

    Apache的学习笔记

    版权声明:可以任意转载,转载时请务必以...我个人感觉Apache的设计充分体现了模块化设计的优势,通过在动态模块加载(DSO)模式下的安装,任何子应用模块都可以通过配置文件的简单修改进行积木式的灵活配置。安装的过

    java源码分析工具-Java-Learn:Java学习笔记-java学习笔记,包括JVM,并发,JDK一些工具的源码,各种书籍,spring

    设计模式 算法 :pencil: 操作系统 :laptop: 网络 :cloud: 数据库 :floppy_disk: Java :woman_and_man_holding_hands: JavaWeb :hot_beverage: 分布式 :sweat_droplets: 设计模式 :hammer: 《转载说明》 向优秀的大佬...

    「Golang学习+面试指南」第一部分大部分Golang招聘所需要掌握的核心知识 准备Golang面试,首选GolangGuide!.zip

    一定给个STAR支持一下吧包括Golang基础、map、context、channel、GMP、锁、并发、GC、内存、Gin源码等Java、MySQL、Redis、...设计模式、多元、高可用、高性能、高并发、安全简历指导、求职宝典等~~为了粉丝、为了开源...

    java版商城源码下载-xdmala::rolling_on_the_floor_laughing:前端blog

    java版商城源码下载 2019-09-19:添加其它在线课的笔记...★JavaScript设计模式 ★轻项目 ◇移动端项目豆瓣电影 ◇实现一个MVVM框架 ◇自制 UI 框架(简易版) ◇小米商城前端实践 ★命令行常用技巧 ★每日一题 ★Java

    java8集合源码分析-javaLearner:java学习者

    《深入理解Java虚拟机》、《并发编程的艺术》、《Java多线程核心编程艺术》、《Java8函数式编程》、《Redis设计与实现》、《RocketMQ技术内幕》...内幕》、《Spring源码深度解析》、《剑指Offer》、《大话设计模式》......

    my_demos:深入前端核心理论,记录个人博客

    撰写不易,望多多包涵,多多 star,转载请说明markdown 暂不支持新标签打开,为了更好阅读体验请右键“新标签页”打开《JavaScript 高级程序设计(第三版)》学习笔记:第 5 章:引用类型第 6 章:面向对象的程序...

    springmybatis

    而且也比较轻量级,因为当时在项目中,没来的及做很很多笔记。后来项目结束了,我也没写总结文档。已经过去好久了。但最近突然又对这个ORM 工具感兴趣。因为接下来自己的项目中很有可能采用这个ORM工具。所以在此...

Global site tag (gtag.js) - Google Analytics