美文网首页
GeekBand极客班C++设计模式第二周笔记

GeekBand极客班C++设计模式第二周笔记

作者: xiaoxii | 来源:发表于2017-03-20 21:20 被阅读0次

    8.工厂方法

    对象创建模式
    -通过对象创建模式来避免new过程中导致的紧耦合
    -factory method
    -abstract factory
    -prototype
    -builder

    factory method 工厂方法

    动机motivation
    -创建对象的工作中,需要创建的对象因需求不同而不同
    -绕过常规对象创建方法new,提供一种封装机制避免具体对象创建带来的紧耦合

    模式定义
    -定义一个用于创建对象的接口,让子类决定实例化的具体类
    -将类的实例化延迟到子类,解耦合,通常用虚函数

    要点
    -用来隔离类对象的使用者和具体类型之间的耦合关系,解决new导致的紧耦合关系
    -将所要创建的具体对象工作延迟到子类,从而实现一种扩展而非更改的策略
    -解决单个对象的需求变化,
    -缺点在于要求创建方法/参数相同

    一个对象的类型往往声明成抽象的类或者接口,而不是具体的类
    实现面向接口的编程体现了依赖抽象原则

    9.抽象工厂

    abstract factory 抽象工程
    动机motivation
    -一系列相互依赖的对象的创建,在需求变化时
    -绕过唱歌对象创建方法new,封装多系列具体对象创建工作,避免紧耦合

    模式定义
    -提供一个借口,负责创建一系列相关或者相互依赖的对象,无需指定他们的具体类

    要点
    -没有多系列对象构建,使用简单工厂即可
    -系列对象是指特定系列下的对象之间有相互依赖或作用的关系,不同系列对象之间不能相互依赖
    -abstract factory用于应对新系列需求变动
    -缺点难以应对新对象的需求变动

    10. 原型模式

    prototype原型模式
    -属于对象创建模式的一种
    动机motivation
    -结构复杂的对象的创建工作,需求变化使对象结构变化,但接口一致
    -向可好程序隔离出一遍对象,使得依赖易变对象的客户程序不随需求改变而改变

    模式定义
    -通过拷贝原型来创建新的对象

    要点
    -用于隔离类对象的使用者和具体易变类型之间的耦合关系,要求易变类型拥有稳定的接口
    -创建易变类的尸体对象时采用原型克隆的方法,灵活动态创建拥有稳定接口的新对象
    -需要注册一个新类的对象原型,然后在需要的地方clone
    -clone方法可以用框架中的序列化来实现深拷贝

    11. 构建器

    builder构建器

    动机motivation
    -复杂对象的创建中各个部分自对象用一定的算法构成,需求变化使复杂对象各个部分发生变化,但他们组合的算法相对稳定
    -提供封装来隔离复杂对象的各个部分,保持系统中稳定的构建算法不随需求改变而改变

    模式定义
    -将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示

    要点
    -分步骤构建复杂对象,其中分步骤是稳定的算法,复杂对象各个部分变化频繁
    -变化点和封装点
    -应对复杂对象各个部分的频繁变动需求
    -缺点难以应对分步骤构建算法的变动
    -注意不同语言中构造器内调用虚函数的差别

    12.门面模式

    接口隔离模式
    -组件构建过程中接口之间的依赖需要被隔离
    -facade
    -proxy
    -adapter
    -mediator

    facade门面模式

    动机motivation
    -客户和组件中关系比较复杂,耦合过多
    -简化外部客户程序和系统间的交互接口,将外部客户程序的演化和内部子系统的变化之间的依赖解耦合

    模式定义
    -为子系统的一组接口提供一个一致稳定的界面,定义一个高级接口,使子系统更加容易使用

    要点
    -简化了整个组件系统的接口
    -内部子系统的任何变化不会影响到facade接口变化
    -注重从框架的层次看待整个系统,一种构架
    -组件内部是相互耦合关系比较大的一系列组件

    13.代理模式

    proxy代理模式
    动机motivation
    -对象创建开销大、操作需要安全控制、需要进程外访问
    -在不失去透明操作对象的同时来管理和控制这些对象特有的复杂性,增加一层间接层

    模式定义
    -为其他对象提供一种代理以控制、隔离、使用接口访问对象

    要点
    -增加一层间接层
    -不一定要求保持接口完整的一致性,能够实现间接控制,损失一定透明性

    14.适配器

    adapter适配器
    动机motivation
    -需要将现存的对象放在新的环境中应用,但新环境要求的接口不同
    -应对迁移的变化,既能利用现有对象的良好实现,又能满足新应用环境所要求的接口

    模式定义
    -将一个类的接口转换成客户希望的另一个类的接口,使原本由于接口不兼容而不能一起工作的类可以一起工作

    要点
    -应用于希望复用一些现存的类,但接口与环境要求不一致
    -在遗留代码复用、类库迁移时有用
    -对象适配器和类适配器
    -类适配器采用多继承实现方式,不推荐使用
    -对象适配器采用对象组合方式

    15.中介者

    mediator中介者
    动机motivation
    -多个对象互相关联交互,对象之间维持复杂的引用关系,需求更改引起变化
    -使用一个中介对象管理对象间关联关系,避免相互交互的对象之间的紧耦合引用关系

    模式定义
    -用一个中介对象来封装一系列对象交互,中介者使各对象不需要显式的相互引用,编译时依赖到运行时依赖,松散耦合关系,可以独立改变交互关系

    要点
    -将多个对象间复杂的关联关系解耦合,集中管理多个对象间的控制逻辑
    -变多个对象互相关联,为多个对象和一个中介者关联
    -facade是解耦合系统间单向对象关联关系
    -mediator是解耦合系统内各个对象之间双向的关联关系

    .

    相关文章

      网友评论

          本文标题:GeekBand极客班C++设计模式第二周笔记

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