zoukankan      html  css  js  c++  java
  • 设计模式——第一课

            设计模式依照特点能够分为三大类型,各自是:创建型、结构型和行为型。经常使用的设计模式又能够细分为23种。


            创建型模式使用来创建对象的模式,抽象了实例化的过程,帮助一个系统独立于其关联对象的创建、组合和表示方式。创建型模式的两个主要功能:1、将系统所使用的详细类的信息封装起来;2、隐藏类的实例是怎样被创建和组织的。外界对于这些对象仅仅知道它们有共同的接口,而不清楚详细的实现细节。


            常见的创建型设计模式有:

            单例模式(Single Pattern):一个类仅仅有一个实例,并且自行实例化并向整个系统提供这个实例。

            工厂方法模式(Factory Pattern):在工厂方法模式中,工厂类成为了抽象类,实际的创建工作将由其详细子类来完毕。工厂方法的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中去,强调的是“单个对象”的变化。

            抽象工厂方法(Abstract Pattern):抽象工厂是全部工厂模式中最为抽象和最具有一般性的一种形态。

    抽象工厂能够向客户提供一个接口,使得客户能够在不必指定产品详细类型的情况下。创建多个产品组的产品对象,强调的是“系列对象”的变化。

            创建者模式(Builder Pattern):把构造对象实例的逻辑移到了类的内部,在类的外部定义了该类的构造逻辑。

    它把一个复杂的对象的构造过程从对象的表示中分离出来,将一个复杂的对象简化为一个比較简单目标对象,强调的是产品的构造过程。

            原型模式(Prototype Pattern):原型模式和工厂模式一样,相同对客户隐藏了对象创建工作。但与通过对一个类进行实例化来构造新对象不同的是,原型模式是通过复制一个现有对象生成新对象。


            结构型模式讨论的是类和对象的结构,它採用继承机制来组和接口和实现,或者通过组合一些对象实现新的功能。


            结构型常见的设计模式有:

            代理模式(Proxy):为其它对象提供一种代理以控制对该对象的訪问。

            装饰模式(Decorator):动态地给一个对象加入一些额外的职责。就添加功能来说,装饰模式比生成子类更为灵活。

            适配器模式(Adapter):将一个类的接口变换成client所期待的还有一个接口,从而使原本由于接口不匹配而无法在一起工作的两个类可以在一起工作。

            组合模式(Composite):也叫合成模式,将对象组合成树型结构以表示“部分-总体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。

            桥梁模式(Bridge):也叫桥接模式。将抽象和实现解耦,使得两者能够独立变化。

            外观模式(Facade):也叫门面模式。要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行,外观模式提供一个高层次的接口。使得子系统更易于使用。

            享元模式(Flyweight):是池技术的重要实现形式,使用共享对象可有效地支持大量的细粒度的对象。


            行为型设计模式关注的是对象的行为。用来解决对象之间的联系问题。


            常见的行为型设计模式有:

            模板方法模式(Template Method):定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类能够不改变一个算法的结构就可以重定义该算法的某些特定步骤。

            命令模式(Command):是一种高内聚的模式。将一个请求封装成一个对象,从而使用不同的请求把client參数化,对请求排队或者记录请求日志,能够提供命令的撤销和恢复功能。

            责任链模式(Chain of Responsibility):使多以对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。

            策略模式(Strategy):也叫政策模式。定义一组算法,将每一个算法都封装起来。而且是他们之间能够互换。

            迭代器模式(Iterator):提供一种方法訪问一个容器对象中的各个元素,而又不须要暴露该对象的内部细节。

            中介者模式(Mediator):用一个中介对象封装一些列的对象交互,中介者使各对象不须要显式的相互作用,从而使其耦合松散,并且能够独立的改变他们之间的交互。

            观察者模式(Observer):也叫公布订阅模式,定义对象间的一种一对多的依赖关系,使得每当一个对象改变状态。则全部依赖它的对象都会得到通知并被自己主动更新。

            备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态。并在该对象之外保存这个状态

            訪问者模式(Visitor):封装一些作用于某种数据结构中的个元素的操作,它能够在不改变数据结构的前提下定义作用于这些元素的新的操作。

            状态模式(State):当一个对象内在状态改变时同意其改变行为,这个对象看起来像改变了其类型。状态模式的核心是封装,状态的变更引起了行为的变更。

            解释器模式(Interpreter):给定一门语言。定义它的文法的一种表示,并定义一个解释器,该解释器使用该文发表时来解释语言中的句子。

  • 相关阅读:
    golang的并行快速排序
    深信服面试
    一道算法题-勇敢的牛牛
    一道算法题-打车
    一道算法题-最少需要换掉的瓷砖数量
    《C++ Primer Plus》读书笔记之二—复合类型
    图解:TCP协议中的三次握手和四次挥手
    一道算法题-不用加减乘除做加法
    OSI七层模型与TCP/IP五层模型
    Socket编程
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/6955434.html
Copyright © 2011-2022 走看看