zoukankan      html  css  js  c++  java
  • 23种设计模式

    设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。它包括的23种设计模式分别为:工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式、职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式。

    工厂方法模式是一种类创建型模式,他指的是建立一个接口,这个接口就相当于是一个工厂,他只是负责提供一个负责生产的方法,而要生产什么产品和生产什么“品牌”的产品则是由子类来实现。这样做的优点就是在想要生产一个不同种类的新产品时不用修改其他的生产产品的子类和具体的工厂的子类,满足了开闭原则。

    抽象工厂模式时对象创建型模式,它是在工厂方法模式的基础上添加了产品族和产品等级结构的概念,产品族是同一个“品牌”的不同种类的产品,产品等级结构是产品的继承结构,在这种模式中抽象的工厂是一个父类,不同的“品牌”的工厂(即产品的等级结构)继承这个父类,然后各个“品牌”的工厂生产不同种类的产品(即产品族)。

    建造者模式是一种对象创建型模式,就是将一个比较复杂对象的创建过程分解为简单的小过程的,而使用的人不需要知道它内部是如何组合成为复杂的对象的。

    原型模式是一种对象创建型模式,它就相当于是一个克隆的过程,被克隆的对象就是一个原型,克隆分为深克隆和浅克隆,深克隆随着原型对象的变化而变化,但是浅克隆则只保持它初次克隆的状态,不会随着原型对象的变化而变化。它最大的优点就是可以很快速的创建很多相同或相似的对象,简化了对象的创建过程,还可以保留对象的一些中间状态。

    单例模式是一种对象创建型模式,在这个模式中将一个类唯一的一个实例提供给整个系统,这个类就是单例类,它提供了全局访问的方法,因为它只封装了一个实例,所以可以有效的控制客户对于它的访问时间、方式等。

    适配器模式是一种对象结构型模式也是一种类结构型模式,它就相当于是一个转换器,将已有接口转换为用户想要的接口,使得接口不兼容的各个类可以共同工作。它可以使目标类和适配者类解耦,具有良好的灵活性和扩展性。

    桥接模式是一种对象结构型模式,它将抽象类和它的具体实现类分离,将相当于在抽象类和实现类之间搭了一个桥,使得它们可以单独进行变化,而不互相影响,当用到它们的时候只需要将它们按照自己的需求进行组合就可以了。

    组合模式是一种对象型结构模式,这个模式主要采用的就是使用树形结构来表示整体和部分的层次关系,这样可以使得分析复杂对象更为简单。

    装饰模式是一种对象结构型模式,顾名思义这个模式就是对于类进行一些“装饰”,“装饰”就是给对象增加一些额外的职责,使用装饰模式比为要增加功能的对象创建一个子类来的简单的多,并且调用不同的装饰类即可获得不同功能的对象。

    外观模式是一种对象型结构模式,就是相当于是给内部子系统和外部加了一道门,它们进行通信必须通过这个门,而且这个门定义了一个高层的接口使得子系统更容易使用从而降低了系统的复杂程度。

    享元模式是一种对象结构型模式,它指的是通过共享实现对于相同或相似对象的重用,这些对象都是比较相似的,它们之间的变化粒度很小。这一模式减少了这些变化粒度很小的对象在内存中的使用,从而降低了内存的负担;而且它们的外部状态相互独立并且不会影响到内部状态,所以可以在不同的环境中进行共享。

    代理模式是一种对象结构型模式,代理在这里就相当于是一个“房屋中介”他负责控制控制原对象的引用。因为调用者没有直接调用被调用者,所以系统耦合度大大降低,少部分代理可以控制对于原对象的使用权限,在一定程度上保护了原对象。

    职责链模式是一种对象行为型模式,一个客户发出请求之后,根据具体的条件来判断哪个对象进行处理,这条链可以是直线、环或者树形结构,它将发送请求者和请求处理者进行了解耦。

    命令模式是一种对象行为型模式,在这个模式中每个请求都被封装为一个对象,从而方便了请求的实现以及处理方法的调用,也方便了对于撤销的实现。

    解释器模式是一种类行为型模式,就相当于是一个翻译官,先定义要用到的“语言”即这里的语言的文法,然后建立一个“翻译官”,对这段文法进行解释,然后做出响应。

    迭代器模式是一种对象行为型模式,定义了一个方法来遍历聚合对象,并且迭代器中增加新的聚合类和迭代器类都无须修改原代码,满足了“开闭原则”。

    中介者模式是一种对象行为型模式,它相当于一个聊天室,可以群发,也可以单发,中介者的作用就是使得类中的对象不用显式的进行引用,降低了对象之间的耦合度。

    备忘录模式是一种对象行为型模式,相当于word中的撤销和重做,它保存了对象的各个时间的状态,然后进行恢复或者重做。

    观察者模式是一种对象行为型模式,它包括一个目标和一个监听者,当目标发生改变时,监听者做出相应的改变。

    状态模式是一种对象行为型模式,当对象的内部状态发生变化时,它的行为也随着变化,但是它的类并没有发生变化。它有效的减少了条件语句的使用,增加了运行效率。

    策略模式是一种对象行为型模式,它封装了一些算法,这些算法可以进行转换,并且这些算法独立于客户存在,满足了“开闭原则”。

    模板方法模式是一种类行为型模式,将几个不同的行为中相同的步骤封装为固定的模版,然后实现某个行为时,只需要实现不同的步骤即可,是代码复用的基本技术。

    访问者模式是一种对象行为型模式,每个“人”对于某个元素都有自己的操作,但是这些操作不改变这个元素的类。

  • 相关阅读:

    python 爬取可用
    安装完出现Deprecated: Function ereg_replace() is deprecated in
    mysql数据库还原出错ERROR:Unknown command ‘\’解决手记
    mysql 常用语句
    This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery 解决方法
    js 中 json对象 与 json字符串 间相互转换
    神器 Sublime Text 3 的一些常用快捷键
    神器 Sublime Text 3 的一些常用插件
    apache php gzip压缩输出的实现方法
  • 原文地址:https://www.cnblogs.com/muamu/p/6662422.html
Copyright © 2011-2022 走看看