美文网首页
桥接模式(Bridge)(常用)

桥接模式(Bridge)(常用)

作者: jiahzhon | 来源:发表于2020-03-09 10:55 被阅读0次

- 定义

  • 桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。
  • 桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。抽象类和它的派生类用来实现自己的对象。

- 使用场景

  • 当一个类存在两个独立变化的维度,且这两个维度都需要进行扩展时。
  • 当一个系统不希望使用继承或因为多层次继承导致系统类的个数急剧增加时。
  • 当一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性时。

- UML结构图

下载.png
  • 抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。

  • 修正抽象化(RefinedAbstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。

  • 实现化(Implementor)角色:这个角色给出实现化角色的接口,但不给出具体的实现。必须指出的是,这个接口不一定和抽象化角色的接口定义相同,实际上,这两个接口可以非常不一样。实现化角色应当只给出底层操作,而抽象化角色应当只给出基于底层操作的更高一层的操作。

  • 具体实现化(ConcreteImplementor)角色:这个角色给出实现化角色接口的具体实现。

1528771071-7554-a9d436f6426d8d4d166d2b427670.png

- 代码

public class BridgeTest
{
    public static void main(String[] args)
    {
        Implementor imple=new ConcreteImplementorA();
        Abstraction abs=new RefinedAbstraction(imple);
        abs.Operation();
    }
}
//实现化角色
interface Implementor
{
    public void OperationImpl();
}
//具体实现化角色
class ConcreteImplementorA implements Implementor
{
    public void OperationImpl()
    {
        System.out.println("具体实现化(Concrete Implementor)角色被访问" );
    }
}
//抽象化角色
abstract class Abstraction
{
   protected Implementor imple;
   protected Abstraction(Implementor imple)
   {
       this.imple=imple;
   }
   public abstract void Operation();   
}
//扩展抽象化角色
class RefinedAbstraction extends Abstraction
{
   protected RefinedAbstraction(Implementor imple)
   {
       super(imple);
   }
   public void Operation()
   {
       System.out.println("扩展抽象化(Refined Abstraction)角色被访问" );
       imple.OperationImpl();
   }
}

- 例子:

  • 手机按照品牌分可以分为华为、小米、oppo、vivo等品牌,如果这些手机按照内存分又可以分为4G、6G、8G等等。假如我们每一种手机都想要玩一下,至少需要4*3个。做手机内存的是一个公司,想要做什么手机我们只需要让其两者搭配起来即可。有点类似于全球贸易分工明确的思想。如果是使用继承,先定义手机父类,再继承父类定义手机类,再为每种手机类写有特定内存的子类。

第一步:定义Implementor,这里定义手机内存接口


4e4a20a4462309f7081cb61623ff29f6d6cad6bd.jpeg

第二步:定义ConcreteImplementor,这里指具体的内存
内存这里定义了两种一种是6G,一种是8G


7acb0a46f21fbe0954dc66aa3a9129368544ad80.jpeg
第三步:定义Abstraction手机抽象类
ac6eddc451da81cb66c0b3020297f5130b2431d4.jpeg

第四步:定义Refined Abstraction(具体的手机品牌)
首先是华为


8ad4b31c8701a18b16042af8cfde220d2a38fe94.jpeg

然后是小米


3812b31bb051f81923afc63f8b456fe82f73e730.jpeg
第五步:测试一下
d62a6059252dd42a3b3cfd3852ca7eb0c8eab866.jpeg
代码就可以看出,购买手机的时候,品牌和内存两个维度是分开的。

相关文章

  • 桥接模式(Bridge)(常用)

    - 定义 桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。 桥接模式将继承关系转化成关联关系,它...

  • 设计模式(结构型)-- 桥接模式

    需掌握程度: 了解 (不常用,认识即可) 桥接模式的原理解析 桥接模式,也叫作桥梁模式,英文是 Bridge De...

  • 设计模式解析—桥接设计模式

    桥接模式(Bridge Pattern)定义和使用场景 定义桥接模式(Bridge Pattern):将抽象部分...

  • docker的三种网络模式

    桥接模式:bridge

  • 桥接模式

    设计模式:桥接模式(Bridge)

  • 结构型-桥接(Bridge)

    桥接(Bridge) [TOC] 定义 桥梁模式(Bridge Pattern)也叫做桥接模式,是一个比较简单的模...

  • 设计模式-桥接模式

    设计模式-桥接模式 定义 桥接模式(Bridge Pattern)也称为桥梁模式、接口(Interface)模式或...

  • 10-桥接模式

    桥接模式-Bridge Pattern【学习难度:★★★☆☆,使用频率:★★★☆☆】 处理多维度变化——桥接模式(...

  • 桥接模式

    桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。 桥接(Bridge)模式的优点是:由于...

  • 桥接模式-原理类图

    桥接模式(Bridge)-基本介绍 桥接模式(Bridge模式)是指:将实现与抽象放在两个不同的类层次中,使两个层...

网友评论

      本文标题:桥接模式(Bridge)(常用)

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