`

Bridge 模式

 
阅读更多

将抽象和行为部分分离,使它们都可以独立变化。

抽象和行为划分开来,各自独立,但又能动态的结合,从而可以满足多维度的变化。

比如,一个需求:coffee可以有大杯,中杯,小杯,同时又可以有各种不同的风味。大杯,中杯或小杯属于coffee的量,是coffee的抽象的属性,而加风味则是属于行为。这些抽象的东西和行为又是可以组合的,如果抽象和行为不分开,则对于每一中组合,都需要一个子类来实现,而且子类中会有很多重复代码。反之,如果把抽象和行为分开,进行组合,从而可以减少子类的数量。如果不把抽象和行为分开,在这个例子中就需要9个实现类来实现上面的需求。

如果用bridge,如下图,则用6个子类就可以到达9种组合:

如何实现?
使用Bridge模式后,我们需要将抽象和行为分开,风味配置属于行为,我们将它们抽象成一个专门的行为接口.

先看看抽象部分的接口代码:

public abstract class Coffee
{
   CoffeeFlavor coffeeFlavorImpl;

Int volume;

String flavor;

public abstract Coffee setFlavorImpl(CoffeeFlavor impl);
   public abstract Coffee getACupOfCoffee();
}

其中CoffeeImp 是加不加奶的行为接口,看其代码如下:

public interface CoffeeFlavor
{
   public void setFlavor();
}

现在我们有了一个抽象类和接口,下面我们分别对其进行继承,实现concrete class:

//大杯
public class LargeSizeCoffee extends Coffee
{
   public void setFlavorImpl(){

//......

}

   public Coffee getACupOfCoffee()
   {
     getCoffeeImp().setFlavor();
     //setVolume()...... Large size
    }
  
   }
}

下面是对行为的实现:

public class AppleFlavor implements CoffeeFlavor
{
   FragrantCoffeeImp() {}

   public void setFlavor()
   {
     //set apple flavor

   }
}

分享到:
评论

相关推荐

    Bridge模式

    23种设计模式的java实现之Bridge,代码实现

    (结构型模式)Bridge模式

    23种设计模式之六(结构型模式)Bridge模式

    Bridge模式代码

    Bridge模式代码Bridge模式代码Bridge模式代码Bridge模式代码

    设计模式之Bridge模式

    Bridge模式是对抽象和具体的进一步抽象。假设你有一个抽象类,一个具体类,现在需要将两者的变化都考虑进去,这就需要bridge。这是经典设计模式中唯一的可以同时处理抽象和具体同时变化的设计模式

    Docker为网络bridge模式指定容器ip的方法

    Docker在创建容器时有四种网络模式,bridge为默认不需要用--net去指定,其他...那Docker为网络bridge模式指定容器ip该如何实现呢?下面通过通过这篇文章一起看看吧,文中给出了详细的示例代码,有需要的可以参考借鉴。

    软件设计模式 bridge模式 代理模式等

    软件设计模式,共包含二十多种模式,做IT的必备知识呀!

    Java设计模式之桥模式(Bridge模式)介绍

    主要介绍了Java设计模式之桥模式(Bridge模式)介绍,本文讲解了为什么使用桥模式、如何实现桥模式、Bridge模式在EJB中的应用等内容,需要的朋友可以参考下

    Docker基础-19-网络-bridge模式和docker0详解.rar

    Docker基础-19-网络-bridge模式和docker0详解.rar

    设计模式探索系列之Bridge模式

    这就要使用Bridge模式。 意图 将抽象部分与实现部分分离,使它们都可以独立的变化。[GOF《设计模式》] 结构图图1Bridge模式结构图 生活中的例子 桥接模式将抽象部分与它的实现分离,使它们能够独立地变化。一个...

    设计模式Bridge学习

    针对设计模式中的 bridge 模式,做了一个小例子,希望对设计模式研究的朋友有所帮助。

    设计模式精解-GoF 23种设计模式解析

    2.1 Bridge模式 2.2 Adapter模式 2.3 Decorator模式 2.4 Composite模式 2.5 Flyweight模式 2.6 Facade模式 2.7 Proxy模式 3 行为模式.....55 3.1 Template模式 3.2 Strategy模式 3.3 State模式 3.4 Observer模式...

    36种最新设计模式整理

    Design Pattern: Bridge 模式 38 Design Pattern: Composite 模式 40 Design Pattern: Decorator 模式 41 Design Pattern: Facade 模式 44 Design Pattern: Flyweight 模式 46 Design Pattern: Proxy 模式(一) 48 ...

    论文研究-设计模式变体的描述与验证.pdf

    为解决标准设计模式演化后难以检测的问题,引入设计模式变体思想,以Bridge模式为例,给出了八种常用的变体实现,并以人工形式挖掘了四种开源系统中Bridge模式变体的基准数,接着在Apache Ant 1.6.2与JHotDraw 5.1...

    C#设计模式.PDF

    五、 另外一个实际应用Bridge模式的例子 153 六、 在什么情况下应当使用桥梁模式 158 设计模式(17)-Chain of Responsibility Pattern 158 一、 职责链(Chain of Responsibility)模式 160 二、 责任链模式的结构...

    设计模式可复用面向对象软件的基础.zip

    2.6.4 Bridge 模式 40 2.7 用户操作 40 2.7.1 封装一个请求 41 2.7.2 Command 类及其子类 41 2.7.3 撤消和重做 42 2.7.4 命令历史记录 42 2.7.5 Command 模式 44 2.8 拼写检查和断字处理 44 2.8.1 访问分散的信息 44...

    设计模式--C++

    4.2 Bridge(桥接)—对象结构型模式 100 4.3 Composite(组成)—对象结构型模式 107 4.4 Decorator(装饰)—对象结构型模式 115 4.5 FACADE(外观)—对象结构型模式 121 4.6 Flyweight(享元)—对象结构型模式 ...

    设计模式(.PDF)

    2.6.4 Bridge 模式 40 2.7 用户操作 40 2.7.1 封装一个请求 41 2.7.2 Command 类及其子类 41 2.7.3 撤消和重做 42 2.7.4 命令历史记录 42 2.7.5 Command 模式 44 2.8 拼写检查和断字处理 44 2.8.1 访问分散的信息 44...

    GOLF设计模式(C++语言版)

    2.6.4 Bridge 模式 40 2.7 用户操作 40 2.7.1 封装一个请求 41 2.7.2 Command 类及其子类 41 2.7.3 撤消和重做 42 2.7.4 命令历史记录 42 2.7.5 Command 模式 44 2.8 拼写检查和断字处理 44 2.8.1 访问分散...

Global site tag (gtag.js) - Google Analytics