• 简述23种设计模式


    1.工厂方法模式

    这种设计模式属于创建型模式,由父类负责创建对象的公共接口,通过接口使子类负责生成具体的对象,即通过子类来决定究竟应该实例化哪一个具体的类.,这样设计能够轻松的添加新的子类进去以增加新的功能模块,而不影响其他代码的编写,是符合"开闭原则"的.

    2.抽象工厂模式

    这种设计模式属于创建型模式,它是提供一个将相关依赖的对象联系起来的接口,不需要再指定它们具体是属于哪个类,然后在你需要的类里面去通过接口直接调用这些具体的类即可,就例如一个工厂可以生产多种不同的产品.

    3.建造这模式

    这种设计模式属于创建型模式,他就是将对象的构建与他的表示进行分离.就像去餐厅吃饭,餐厅中有各种套餐,每种套餐都是由主食和菜品以及汤食等组成,但是组成的套餐种类确实各式各样的,用相同的过程来呈现不同的结果以供选择.

    4.原型模式

    这种设计模式属于创建型模式,他是先指定创建对象的种类,然后可以经过复制来源源不断的创建此对象.最简单的例子就是孙悟空拔毛变猴子,文件的复制等等.

    5.单例模式

    这种设计模式属于创建型模式,他是通过自身创建一个实例,并且只能有这么一个实例,然后他通过访问自己去提供自身的这个实例.就像一个人的身份证号,无论在什么地方,身份证号是不会改变的,并且会在多种地方进行使用.

    6.适配器模式

    这种设计模式属于结构型模式,他是将一种接口转换成为想要的另一种接口,使不同的接口可以一起使用,就解决了类与类之间因为没有接口而无法相互联系的问题,像笔记本电脑的充电器一样通过电源适配器来进行转换使得电脑能够通过插头进行充电.

    7.桥接模式

    这种设计模式属于结构型模式,将抽象部分和实现部分分开,即抽象类和实现类分开,使得子类能够随便组合调用,来产生想要的不同的结果,比如笔的型号和颜色抽象出来,通过子类来具体实现,自由组合,得到想要的画笔的属性.

    8.组合模式

    这种设计模式属于结构型模式,将多个单独的对象或实体进行组合形成树形结构,这种模式对于单个对象和组合对象的是用具有一致性,可以清楚地来表示整体-部分之间的关系,最常见的就是我们文件夹样例.

    9.装饰模式

    这种设计模式属于结构型模式,动态的给想要增加职责的对象添加职责,使用装饰模式的话就不用再去使用继承了,直接在抽象的装饰类里添加相应的装饰类即可,也是符合"开闭原则"的,不用去修改其他的类.

    10.外观模式

    这种设计模式属于结构型模式,这个理解起来比较简单,比如网站就是为特定的接口的集合提供一个界面,然后子系统套子系统这样,适用关联关系将外观类与子系统类进行联系起来既可以了,再举个简单的例子就是遥控器,也是这个模式.

    11.享元模式

    这种设计模式属于结构型模式,为了避免重复创建对象耗费资源的问题,享元模式通过建立享元池,实现对象的共享来节约资源,对于相似度比较高,状态变化很小的对象,提供共享机制,就可以节约大量的资源来用在其他需要的地方.

    12.代理模式

    这种设计模式属于结构型模式,有时候不能直接调用或不想直接引用一个对象,就需要一个第三者就是代理类来实现客户与目标类的通信,代理和实体有相同的父类,用户通过代理与实体进行通信,代理类有着自己特有的方法去访问实体类,一般代理与实体是关联的关系。

    13.职责链模式

    这种设计模式属于行为型模式,将能够处理同一类请求的对象连成一条链,所提交的请求沿着链进行传递逐个判断是否能够处理该请求,如果不能则继续传递给下一个,直到能过处理该请求为止,就像请假的天数和能够给你请假的上级.

    14.命令模式

    这种设计模式属于行为型模式,将请求的发送者和请求的接收者分离,通过抽象编程的方式,使得相同的请求发送者可以作用于不同的请求接收者,遥控器就是一个比较典型的例子.

    15.解释器模式

    这种设计模式属于行为型模式,自定义一个新的编程语言,该语言有一套自己的语法规范,如运算符和关键字等,它易于改变,扩展文法和实现文法,增加了新的解释表达式的方式,也符合开闭原则.

    16.迭代器模式

    这种设计模式属于行为型模式,通过一个专门的对象来集合对对象的遍历,也就是对要遍历的对象进行封账,而不需要直接操作聚合对象,这个模式是单一职责原则的完美体现,他简化了聚合类并且为遍历不同的聚合类提供了统一的接口.

    17.中介者模式

    这种设计模式属于行为型模式,一如一个中间对象,是系统中原有对象两两之间的复杂交互关系简化为与中间对象的交互,即可以将一个网状的交互结构改为星状交互结构,从而使其耦合度松散.

    18.备忘录模式

    这种设计模式属于行为型模式,这个其实就是将你的操作记录起来,保存在准备好的栈中,以便再想要恢复的时候重新从栈中拿出来进行恢复的过程,相当于是提供了一个后悔的机制,使得对象可以恢复到某一个历史的状态.

    19.观察者模式

    这种设计模式属于行为型模式,他是一个动态的实时反馈机制,当一个对象的状态进行了改变之后,那么与其相关的类就根据此类的状态,做出相应的反应,即一个对象的行为将会影响到其他多个对象的行为的一种模式.

    20.状态模式

    这种设计模式属于行为型模式,一个对象可以在其内部进行改变其自身的状态,然后根据其状态做出相应的反应行为,对象状态不同时,其行为也不相同,状态在转换的时候,对象的行为也会跟着改变.

    21.策略模式

    这种设计模式属于行为型模式,实现某功能存在多种方式,在不修改现有系统的基础上可以灵活选择或更换实现方式,也可以使用新的实现方式,所以需要将其封装起来,以便需要时可以进行相互之间的替换.

    22.模板方法模式

    这种设计模式属于行为型模式,在父类中提供一个方法定义一个操作序列,而将具体的实现操作放在子类中,就是对于不同的过程提供不同方法调取,不同的过程可以说就是一个模板,调取方法时按照模板自身的方法步骤来进行调用.

    23.访问者模式

    这种设计模式属于行为型模式,存在多种类型的对象可以访问某个聚合结构中不同类型的元素对象,不同类型的对象对于不同元素对象可以使用不同的访问方法,

  • 相关阅读:
    basic use of sidekiq
    查看远程git log
    通过rails console执行sql语句
    通过rails打开数据库
    如何用rake tasks 生成migration对应的sql
    Remainders Game (中国剩余定理)
    binary-tree-preorder-traversal
    minimum-depth-of-binary-tree (搜索)
    Find a multiple POJ
    linked-list-cycle (快慢指针判断是否有环)
  • 原文地址:https://www.cnblogs.com/lk0823/p/6666595.html
Copyright © 2020-2023  润新知