zoukankan      html  css  js  c++  java
  • 设计模式分类

    前言

    如果你用的语言能把类型像变量一样赋值并传来传去,很多创建型模式就没用了。
    如果你用的语言能把函数像变量一样赋值并传来传去,很多行为模式就没用了。
    如果你用的语言 style 反对 class hierarchy,很多结构模式就没用了。

    The Lack of Design Patterns in Python Presentation.pdf

    模式可以分为类模式和对象模式,类模式是用继承,对象模式是用委托

    1.创建型模式

      社会化的分工越来越细,自然在软件设计方面也是如此,因此对象的创建和对象的使用分开也就成为了必然趋势。因为对象的创建会消耗掉系统的很多资源,

    所以单独对对象的创建进行研究,从而能够高效地创建对象就是创建型模式要探讨的问题。这里有6个具体的创建型模式可供研究,它们分别是:

    简单工厂模式(Simple Factory) 、  工厂方法模式(Factory Method) 、 抽象工厂模式(Abstract Factory)、创建者模式(Builder)、

    原型模式(Prototype) 、单例模式(Singleton)

    2.结构型模式

      在解决了对象的创建问题之后,对象的组成以及对象之间的依赖关系就成了开发人员关注的焦点,因为如何设计对象的结构、继承和依赖关系会影响到后续

    程序的维护性、代码的健壮性、耦合性等。对象结构的设计很容易体现出设计人员水平的高低,这里有7个具体的结构型模式可供研究,它们分别是:

    外观模式(Facade)、适配器模式(Adapter)、代理模式(Proxy)、装饰模式(Decorator)、桥模式(Bridge)、组合模式(Composite)、

    享元模式(Flyweight)

    3.行为型模式

      在对象的结构和对象的创建问题都解决了之后,就剩下对象的行为问题了,如果对象的行为设计的好,那么对象的行为就会更清晰,它们之间的协作效率就

    会提高,这里有11个具体的行为型模式可供研究,它们分别是:

    模板方法模式(Template Method)、观察者模式(Observer)、状态模式(State)、策略模式(Strategy)、职责链模式(Chain of Responsibility)、

    命令模式(Command)、访问者模式(Visitor)、调停者模式(Mediator)、备忘录模式(Memento)、迭代器模式(Iterator)、

    解释器模式(Interpreter)

    4. 区别

    (1)而策略模式则属于行为型模式,桥接模式是结构型模式的一种

    (2)桥接模式表达的主要意义是接口隔离的原则,即把本质上并不内聚的两种体系区别开来,使得它们可以松散的组合,而策略在解耦上还仅仅是某一个算法

    的层次,没有到体系这一层次。

     

     (3)外观与适配器都是对现存系统的封装。

    外观会定义新的接口,为现存系统提供一个更为方便的访问接口

    适配器则是复用一个原有的接口,适配器是使两个已有的接口协同工作

    (4)代理与外观的主要区别在于,代理对象代表一个单一对象,外观对象代表一个子系统,代理的客户对象无法直接访问对象,由代理提供单独的目标对象的访问,

    而外观对象提供对子系统各元件功能的简化的调用接口。

    (5)单例是创建型模式,享元是结构型模式。单例模式和享元模式都是数据共用的意思,只是单例是大家共用一个东西,而享元是共用多个东西

    (6)模板方法模式与策略模式的都是行为模式,但分别使用继承和委派提供不同的算法行为

    (7)装饰器模式与代理模式区别:装饰器关注于在一个对象上动态的添加方法,而代理关注于控制对对象的访问。换句话说,用代理模式,代理

    类(proxy class)可以对它的客户隐藏一个对象的具体信息。因此,当使用代理的时候,我们常常在一个代理类中创建一个对象的实例。而使用

    装饰器的时候,是将原始对象作为一个参数传给装饰者的构造器。

  • 相关阅读:
    将HTTP请求对象转成curl命令行
    图片爬虫实践
    [CF1499E] Chaotic Merge
    [ICPC2020南京I] Interested in Skiing
    [ICPC2018西安J] Philosophical … Balance
    [ICPC2018西安L] Eventual … Journey
    [ICPC2018西安I] Misunderstood … Missing
    [ICPC2018西安D] Deja vu of … Go Players
    [ICPC2018西安F] Interstellar … Fantasy
    [ICPC2020南京L] Let's Play Curling
  • 原文地址:https://www.cnblogs.com/yuyutianxia/p/3908679.html
Copyright © 2011-2022 走看看