• (结构型模式)Bridge——桥模式


    1、合成聚合原则

    缘由:对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当你需要复用子类时,如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最终限制了复用性。

    原则:

    合成/聚合原则(CARP):尽量使用合成/聚合,尽量不要使用类继承

    聚合一种弱的’拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分

    合成一种强的’拥有’关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样

    合成聚合的好处:优先使用对象的合成/聚合将有助于你保持每个类被封装,并被集中在单个任务上,这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物。

    2、桥模式意图

    桥接模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化

    抽象与实现分离:指的是抽象类和它的派生类用来实现自己的对象

    3、核心思想

    桥模式就是将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化与实现化之间使用组合/聚合关系而不是继承关系,从而让二者独立的变化。

    4、优缺点分析

    GOOD:将抽象部分与实现部分分离,使它们可以独立变化。

    这里说的意思不是让抽象基类与具体类分离,而是现实系统可能有多角度分类,每一种分类都有可能变化,那么把这种多角度分离出来让它们独立变化,减少它们之间的耦合性,即如果继承不能实现“开放-封闭原则”的话,就应该考虑用桥接模式

    5、基本UML图

    91[JEILM2DX1D9$19TY_PKH

    抽象基类:

    1)Abstraction:某个抽象类,它的实现方式由Implementor完成。

    2)Implementor:实现类的抽象基类,定义了实现Abstraction的基本操作,而它的派生类实现这些接口。

    接口函数:

    1)Implementor::OperationImpl:定义了为实现Abstraction需要的基本操作,由Implementor的派生类实现之,而在Abstraction::Operation函数中根据不同的指针多态调用这个函数。

    解析:

    Bridge用于将表示和实现解耦,两者可以独立的变化,在Abstraction类中维护一个Implementor类指针,需要采用不同的实现方式的时候只需要传入不同的Implementor派生类即可。

    6、举例UML图

    clip_image002

  • 相关阅读:
    二分查找 && 三分查找
    LeetCode || 大杂烩w
    LeetCode || 递归 / 回溯
    LeetCode || 双指针 / 单调栈
    HITICS || 2018大作业 程序人生 Hello's P2P
    思维 || Make It Equal
    国庆集训 || Wannafly Day4
    国庆集训 || Wannafly Day1
    区间DP || HDU 6249 Alice’s Stamps
    10进制转k进制
  • 原文地址:https://www.cnblogs.com/steven_oyj/p/1764161.html
Copyright © 2020-2023  润新知