设计模式——桥接模式

一、概念

  桥接模式(Bridge)是一种结构模式,它主要应对的是:由于实际的需要,某个类具有两个或两个以上的维度变化,如果只是用继承将无法实现这种需要,或者使得设计变得相当臃肿。

      桥接模式的做法是把变化部分抽象出来,使变化部分与主类分离开来,从而将多个维度的变化彻底分离。最后,提供一个管理类来组合不同维度上的变化,通过这种组合来满足业务的需要。


桥接模式的结构图:

接口代表面条是否添加辣椒(该接口代表了面条在辣味风格这个维度上的变化):

 public interface Peppery{

           String style();

  }
实现类代表辣椒的风格:
public class PepperyStyle implements Peppery{

     public String style(){

          return "辣味";

     }

}

public class PlainStyle implements Peppery{

     public String style(){

          return "清淡" ;

     }

}

对于系统而言,辣味风格这个维度上的变化是固定的,程序必须面对的,程序使用桥接模式将辣味风格这个维度的变化分离出来了,避免与牛肉、猪肉材料风格这个维度的变化耦合在一起。   

接下来是AbstractNoodle抽象类,其本身可以包含很多实现类,不同实现类则代表了面条在材料风格这个维度上的变化。

public abstract class AbstractNoodle{

     protected Peppery style;

     public AbstractNoodle(Peppery style){

          this.style = style;   

     }

     public abstract void eat();

}

这样就可以完成辣味风格、材料风格两个维度上变化的组合

AbstractNoodle抽象类可看做是一个桥梁,它被用来“桥接”面条的材料风格的改变与辣味风格的改变,使面条的特殊属性得到无绑定的扩充。

以下是猪肉面实现类:

public class PorkNoodle extends AbstractNoodle{

    public PorkyNodle(Peppery style){

         super(style);

    }

     public void eat(){

           System.out.println( "猪肉面条的口味:"+super.style.style());

     }

}
测试类:
public class Test{

     public static void main(String[] args){

         AbstractNoodle noodle = new PorkNoodle(new PepperyStyle());

         noodle.eat();

         AbstractNoodle noodle = new PorkNoodle(new PlainStyle());

         noodle.eat();

     }

}









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值