美文网首页
读书笔记之《设计模式精讲》

读书笔记之《设计模式精讲》

作者: 046ef6b0df68 | 来源:发表于2019-01-23 10:50 被阅读5次

    文|Seraph

    0 | 引言

    0.1 设计模式解析

    1. 学习过程定义:自己学会一门知识(技术)、表达出来、教会别人、记录下。
    2. C++老手和新手的区别就是前者手背上有很多伤疤。
    3. 面向对象系统的分析设计实际上追求的就是两点:
    • 高内聚(Cohesion)
    • 低耦合(Coupling)
    1. 设计模式体现的是一种思想,接受一种思想的熏陶和洗礼,等这种思想融入到了你的思想中后,你就会不自觉地使用这种思想去进行你的设计和开发。
    2. 学习设计模式的过程是一个迭代的过程,无太多经验的程序员,可以从最简单、常用的设计模式入手。
      23种设计模式

    1 | 创建模式

    创建模式有以下5种:Factory、AbstratFactory、Singleton、Builder、Prototype。

    1.1 Factory工厂模式

    问题

    (1)N多个子类继承自抽象基类,我们不得不每次都new xxxxx,当子类过多,难以使用和维护。
    (2)父类中并不知道具体要实例化哪个具体的子类。

    功能

    (1)定义创建对象的接口,封装了对象的创建;
    (2)使得具体化类的工作延迟到了子类中。

    UML

    (1) 解决问题1的UML图如下,其实也是我们常说的简单工厂模式,声明一个创建对象的接口,并封装了对象的创建过程。


    简单Factory模式结构示意图

    (2)解决问题2的UML图如下,提供一个对象创建对象的接口,并在子类中提供其具体实现(因为只有在子类中可以决定到底实例化哪一个类)。
    如下Factory中只是提供了对象创建的接口,其实现将放在Factory的子类ConcreteFactory中进行。


    Factory模式结构示意图
    总结

    优点:Factory模式的威力所在,不是提供了创建对象的接口,而是延迟了子类的实例化。
    缺点:Factory的接口不能封闭,即使通过Factory的子类来实现也需要新键一个类为代价。同时,Factory模式仅仅局限于一类类。

    1.2 AbstratFactory抽象模式

    问题

    (1)要创建一组相关或者相互依赖的对象。

    功能

    将一组对象的创建封装到一个用于创建对象的类中。

    UML
    AbstractFactory Pattern 结构图
    总结

    (1)相较于Factory模式,AbstractFactory模式可以为创建一组(有多个类)相关或依赖的对象提供创建接口。

    1.3 Singleton单例模式

    问题

    创建一个唯一的对象。

    功能

    通过维护一个static的成员变量来记录这
    个唯一的对象实例。
    通过提供一个staitc的接口instance来获得这个唯一的实例。

    UML
    Singleton模式结构图
    总结

    (1)注意Singleton不可以被实例化,因此构造函数声明为protected或private。
    (2)Singleton模式经常会与Factory(AbstractFactory)模式一起使用。如上面所述的工厂对象一般来说只要一个,所以写成一个Singleton即可。

    1.4 Builder建造者模式

    问题

    (1)当我们要创建的对象很复杂的时候(通常是由很多其他的对象组合而成)。

    功能

    将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

    UML
    Builder模式结构图

    Builder模式的关键是其中的Director对象并不直接返回对象,而是通过一步步(BuildPartA,BuildPartB,BuildPartC)来一步步进行对象的创建。当然这里Director可以提供一个默认的返回对象的接口(即返回通用的复杂对象的创建,即不指定或者特定唯一指定BuildPart中的参数)。

    总结

    (1) 相较于AbstractFactory模式

    • Builder模式强调的是一步步创建对象,并通过相同的创建过程可以获得不同的结果对象,一般来说Builder模式中对象不是直接返回的。
    • AbstractFactory模式中对象是直接返回的,AbstractFactory模式强调的是为创建多个相互依赖的对象提供一个同一的接口。

    1.5 Prototype原型模式

    问题

    (1)自我复制

    功能

    提供一个通过已存在对象进行新对象创建的接口。

    UML
    Prototype模式结构图
    总结

    (1)与Builder模式、AbstractFactory模式比较
    都是通过一个类(对象实例)来专门负责对象的创建工作(工厂对象)

    • Prototype模式通过复制原型(Prototype)而获得新对象创建的功能,这里Prototype本身就是“对象工厂”(因为能够生产对象)。
    • Builder模式重在复杂对象的一步步创建(并不直接返回对象)。
    • AbstractFactory模式重在产生多个相互依赖类的对象,而Prototype模式重在从自身复制自己创建新类。

    2 | 结构型模式

    结构型模式有以下7种:Bridge、Adapter、Decorator、Composite、Flyweight、Facade、Proxy。

    2.1 Bridge模式

    3 | 行为模式

    行为模式有以下11种:Template、Strategy、State、Observer、Memento、Mediator、Command、Visitor、Chain of Responsibility、Iterator、Interpreter。

    3.1 Template模式

    4 | 总结

    4.1 23种设计模式功能

    设计模式 功能
    Factroy Method

    相关文章

      网友评论

          本文标题:读书笔记之《设计模式精讲》

          本文链接:https://www.haomeiwen.com/subject/fmoljqtx.html