zoukankan      html  css  js  c++  java
  • 设计模式介绍

    一、设计模式分类

    1. 创建型模式(Creational Pattern):对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。
      工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式(5种)

    2. 结构型模式(Structural Pattern):关注于对象的组成以及对象之间的依赖关系,描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。
      适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式(7种)

    3. 行为型模式(Behavioral Pattern):关注于对象的行为问题,是对在不同的对象之间划分责任和算法的抽象化;不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用。
      策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式(11种)

    二、简单介绍

    创建型

    1. 工厂方法(Factory Method): 定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。为了遵循扩展开放,修改关闭原则,将简单工厂类转换为工厂方法接口,将其Switch分支分离成子类去继承工厂方法接口类,顺利的将创建对象的过程延迟到子类。
      • 简单工厂(Simple Factory): 是由一个工厂对象决定创建出哪一种产品类的实例,是工厂模式家族中最简单实用的模式。
    2. 抽象工厂(Abstract Factory): 提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。
    3. 原型模式(Prototype): 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
    4. 建造者(Builder): 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
    5. 单例(Singleton): 保证一个类仅有一个实例,并提供一个访问它的全局访问点

    结构型

    1. 适配器(Adapter):将一个类的接口转换为客户希望的另一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类一起工作。
    2. 代理(Proxy):为其他对象提供一种代理以控制对这个对象的访问。
    3. 组合Composite将对象组合成树形结构以表示“部分——整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。
    4. 桥接(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
    5. 享元(flyweight):运用共享技术有效的支持大量细粒度的对象。
    6. 外观(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
    7. 装饰(Decorator):指在不改变现有对象结构的情况下,动态的给一个对象添加额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。

    行为型

    1. 备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将对象恢复到原先保存的状态
    2. 解释器(Interpreter):给分析对象定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例。这种模式实现了文法表达式处理的接口,该接口解释一个特定的上下文。
    3. 策略(Strategy)该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。
    4. 模板方法(TemplateMethod)定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
    5. 观察者(Observer)定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
    6. 迭代器(Iterator)提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
    7. 职责链(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,知道有一个对处理它为止。
    8. 命令(Command):将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。
    9. 中介者(Mediator):定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。
    10. 状态(State):对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。
    11. 访问者(Visitor)表示一个作用于某对象结构中的个元素的操作。它使你可以在不改变各元素的类的前提下定义作用与这些元素的新操作。
  • 相关阅读:
    团队介绍的词频统计
    对软件工程这门课的理解与自我期望
    第九次作业-用户使用手册及测试报告
    第8八次作业——系统设计和任务分配
    基于 Java Web 的毕业设计选题管理平台--选题报告与需求规格说明书
    结对作业之需求分析与原型设计
    博客与GitHub地址
    Python库
    课程理解
    大数据作业
  • 原文地址:https://www.cnblogs.com/isalo/p/15409778.html
Copyright © 2011-2022 走看看