【设计模式笔记】整体分类整理

目录:

  各种设计模式简介

  各种设计模式之间关系

  不同设计模式的对比 


 

设计模式分类与简介

一、创建型:关注对象创建过程;将对象使用与创建分离,使用对象时无需关心对象创建细节,从而降低系统耦合度,让设计方案易于修改和扩展;

  简单工厂:   定义一个工厂类,可以根据输入的不同返回不同类的实例。      

  工厂方法:  定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类。 

                         具体应用场景:1、日志记录器;2、数据库访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。 

  抽象工厂:  提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。

         具体应用场景: 1、QQ 换皮肤,一整套一起换。 2、生成不同操作系统的程序。

  单例:    保证一个类只有一个实例,并提供一个访问它的全局访问点。

         具体应用场景:

          1、Windows 是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以所有文件的处理必须通过唯一的实例来进行。

          2、一些设备管理器常常设计为单例模式,比如一个电脑有两台打印机,在输出的时候就要处理不能两台打印机打印同一个文件。

  原型:    用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。

         具体应用场景:JAVA 中的 Object clone() 方法。
  建造者

         具体应用场景:1、去肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的"套餐"。 2、JAVA 中的 StringBuilder。

二、结构型:关注如何将现有类或对象组织在一起形成更强大的结构;

  适配器

    具体应用场景: 1、美国电器 110V,中国 220V,就要有一个适配器将 110V 转化为 220V。 3、在 LINUX 上运行 WINDOWS 程序。 4、JAVA 中的 jdbc。
  桥接

    具体应用场景: 2、墙上的开关,可以看到的开关是抽象的,不用管里面具体怎么实现的。
  组合

    具体应用场景:在 JAVA AWT 和 SWING 中,对于 Button 和 Checkbox 是树叶,Container 是树枝。
  装饰

    具体应用场景:1、孙悟空有 72 变,当他变成"庙宇"后,他的根本还是一只猴子,但是他又有了庙宇的功能。
  外观

    具体应用场景:1、去医院看病,可能要去挂号、门诊、划价、取药,让患者或患者家属觉得很复杂,如果有提供接待人员,只让接待人员来处理,就很方便。
  享元

    具体应用场景:1、JAVA 中的 String,如果有则返回,如果没有则创建一个字符串保存在字符串缓存池里面。 2、数据库的数据池。
  代理

     具体应用场景: 1、Windows 里面的快捷方式。2、买火车票不一定在火车站买,也可以去代售点。 

三、行为型: 关注系统中对象的交互,研究系统在运行时对象之间的相互通信与协作,进一步明确对象的职责。

  职责链

    具体应用场景:JS 中的事件冒泡。 3、JAVA WEB 中 Apache Tomcat 对 Encoding 的处理,Struts2 的拦截器,jsp servlet 的 Filter。
  命令

    具体应用场景:struts 1 中的 action 核心控制器 ActionServlet 只有一个,相当于 Invoker,而模型层的类会随着不同的应用有不同的模型类,相当于具体的 Command。
  解释器

    具体应用场景:编译器、运算表达式计算。
  迭代

    具体应用场景:JAVA 中的 iterator。
  中介者

    具体应用场景:机场调度系统;MVC 框架,其中C(控制器)就是 M(模型)和 V(视图)的中介者。
  备忘录

    具体应用场景:
  观察者

    具体应用场景:1、拍卖的时候,拍卖师观察最高标价,然后通知给其他竞价者竞价。
  状态

    具体应用场景: 1、打篮球的时候运动员可以有正常状态、不正常状态和超常状态。 2、曾侯乙编钟中,'钟是抽象接口','钟A'等是具体状态,'曾侯乙编钟'是具体环境(Context)。
  策略

    具体应用场景: 1、诸葛亮的锦囊妙计,每一个锦囊就是一个策略。 2、旅行的出游方式,选择骑自行车、坐汽车,每一种旅行方式都是一个策略。 3、JAVA AWT 中的 LayoutManager。
  模板方法

    具体应用场景:1、在造房子的时候,地基、走线、水管都一样,只有在建筑的后期才有加壁橱加栅栏等差异。 
  访问者

     具体应用场景:您在朋友家做客,您是访问者,朋友接受您的访问,您通过朋友的描述,然后对朋友的描述做出一个判断,这就是访问者模式。


 各种设计模式之间关系 

 


 

 不同设计模式的对比 

 

转载于:https://www.cnblogs.com/clarino/p/10253233.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值