• 设计模式


    设计模式

    我们一共学过23种设计模式。他们分为3类:创建型模式、结构型模式、行为型模式。

    创建型模式有:抽象工厂模式、建造者模式、工厂方法模式、原型模式、单例模式。

    结构型模式有:适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式。

    行为型模式有:职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式

    第一种是抽象工厂模式,抽象工厂模式通过一系列相互关联的接口接口实现,实现对一种产品的生产。抽象工厂模式隔离了具体类的生成,是客户并不需要知道什么被创建;当一个产品族中多个对象被设计一起工作时,它能够保证客户端始终只使用同一个产品族的对象;增加新的具体工厂和产品族很方便,无需修改已有系统,符合“开闭原则”。

    建造者模式是将一个复杂对象的构建与他的表示分离时的同样的构建过程可以创建不同的表示。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过复杂对象的类型和内容就可以构建它们,用户不需要知道内容的具体构建细节建造者模式属于对象创建模式。

    原型模式是一种对象创建型模式用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。原型模式允许一个对象再创建另外一个可定制的对象,无需知道任何创建的细节。原型模式的基本工作原理是通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象复制原型来实现创建过程。

    单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类成为单例类,它提供全局访问的方法。单例模式的要点有三个:一是每个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。

    适配器模式使将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器。

    桥接模式是将抽象部分与它的实现部分分离,使他们都可以独立地变化。

    组合模式是组合多个对象形成树形结构以表示“整体-部分”的结构层次。组合模式对单个对象和组合对象的使用具有一致性。组合模式将对象组织到树结构中,可以用来描述整体与部分的关系。

    装饰模式动态的给对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。

    外观模式要求外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

    享元模式通过运用共享技术有效的支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式,它是一种对象结构型模型。

    代理模式给某一对象提供一个代理,并由代理对象控制对原对象的引用。

    职责链模式避免请求发送者与接受者耦合在一起,让多个对象都有可能接受请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。

    命令模式将一个请求封装成为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。

    解释器模式是定义语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”意思是使用规定格式和语法的代码。

    迭代器模式提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标。

    中介者是用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。

    备忘录模式在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样可以在以后将对象恢复到原先保存的状态。

    观察者模式定义对象间的一种以一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅模式、模型-视图模式、源-监听器模式或从属者模式。观察者模式是一种对象行为型模式。

    状态模式允许一个对象在其内部状态改变时改变他的行为,对象看起来似乎修改了它的类。

    策略模式定义一系列算法,将每一个算法封装起来,并让他们可以相互替换。策略模式让算法独立于使用它的客户而变化。

    模板方法定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可以重新定义该算法的某些特定步骤。

    访问者模式表示一个作用于某对象结构中各元素的操作,他是我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

  • 相关阅读:
    开源项目:张帅个人博客
    django url映射的时候指定默认参数
    django 自定义url转换器
    django跳转页面传参
    django中're_path'的用法
    url详解
    django 用户与权限管理
    Python项目搬迁,快捷导出环境依赖包到requirements.txt
    centos安装python3.7
    更换国内pip
  • 原文地址:https://www.cnblogs.com/1443188449qq/p/6665562.html
Copyright © 2020-2023  润新知