科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件java设计模式之Bridge(抽象和行为分开)

java设计模式之Bridge(抽象和行为分开)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

 Bridge定义 :   将抽象和行为划分开来,各自独立,但能动态的结合.

作者:中国IT实验室 来源:中国IT实验室 2007年8月26日

关键字: 抽象和行为分开 BRIDGE java 设计模式

  • 评论
  • 分享微博
  • 分享邮件
  Bridge定义 :
  将抽象和行为划分开来,各自独立,但能动态的结合.
  
  为什么使用?
  通常,当一个抽象类或接口有多个具体实现(concrete subclass),这些concrete之间关系可能有以下两种:
  1. 这多个具体实现之间恰好是并列的,如前面举例,打桩,有两个concrete class:方形桩和圆形桩;这两个形状上的桩是并列的,没有概念上的重复,那么我们只要使用继承就可以了.
  
  2.实际应用上,常常有可能在这多个concrete class之间有概念上重叠.那么需要我们把抽象共同部分和行为共同部分各自独立开来,原来是准备放在一个接口里,现在需要设计两个接口,分别放置抽象和行为.
  
  例如,一杯咖啡为例,有中杯和大杯之分,同时还有加奶 不加奶之分. 如果用单纯的继承,这四个具体实现(中杯 大杯 加奶 不加奶)之间有概念重叠,因为有中杯加奶,也有中杯不加奶, 如果再在中杯这一层再实现两个继承,很显然混乱,扩展性极差.那我们使用Bridge模式来实现它.
  
  如何实现?
  以上面提到的咖啡 为例. 我们原来打算只设计一个接口(抽象类),使用Bridge模式后,我们需要将抽象和行为分开,加奶和不加奶属于行为,我们将它们抽象成一个专门的行为接口.
  
  先看看抽象部分的接口代码:
  
  public abstract class Coffee
  {
    CoffeeImp coffeeImp;
  
    public void setCoffeeImp() {
      this.CoffeeImp = CoffeeImpSingleton.getTheCoffeImp();
    }
  
    public CoffeeImp getCoffeeImp() {return this.CoffeeImp;}
  
    public abstract void pourCoffee();
  }
  
  其中CoffeeImp 是加不加奶的行为接口,看其代码如下:
  
  public abstract class CoffeeImp
  {
    public abstract void pourCoffeeImp();
  }
查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章