设计模式——桥梁模式

桥梁模式的用以是将问题的抽象和现实分离开来实现,通过用聚合代替继承来解决子类爆炸性增长的问题,当系统中有两个可变的因素的时候,桥梁模式是我们应该考虑到的方式。

  • 抽象化(Abstraction)角色 :给出抽象化定义并持有一个实现化对象的引用。
  • 修正抽象化(Refined Abstraction)角色 :扩展抽象化角色,改变和修正父类对抽象化的定义。
  • 实现化(Implementor)角色 :给出实现化的接口角色的接口,但不给出具体的实现。
  • 具体实现化(Concrete Implementor)角色 :给出实现化角色接口的具体实现。

桥梁模式在于将抽象和实现分离(也就是我们常说的解耦),让抽象和实现能够独立变化。

package bridge;
/**
 * 
 *描述:车的抽象类
 */
public abstract class Vehicle {

  private Transport implementor;

  public void transport(){
    implementor.transport();
  }
  public Transport getImplementor() {
    return implementor;
  }
  public void setImplementor(Transport implementor) {
    this.implementor = implementor;
  }

}
package bridge;
/**
 * 
 *描述:汽车的实现类
 */
public class Car extends Vehicle {
  @Override
  public void transport() {
    System.out.print("汽车");
    super.transport();
  }
}
package bridge;
/**
 * 
 *描述:火车的实现类
 */
public class Train extends Vehicle {

  @Override
  public void transport() {

    System.out.print("火车");
    super.transport();
  }

}
package bridge;
/**
 * 
 *描述:车的实现接口
 */
public interface Transport {

  /**
   * 
   *描述:运输
   */
  public void transport();

}
package bridge;
/**
 * 
 *描述:货车
 */
public class Goods implements Transport{

  @Override
  public void transport() {

    System.out.println("运货");
  }

}
package bridge;
/**
 * 
 *描述:客车
 */
public class Guest implements Transport{

  @Override
  public void transport() {

    System.out.println("运客");

  }

}
package bridge;
/**
 * 
 *描述:测试类
 */
public class Client {

  public static void main(String[] args) {
    //造出一辆火车来
    Train train = new Train();
    //装入货物
    train.setImplementor(new Goods());
    //运输
    train.transport();
    //上客
    train.setImplementor(new Guest());
    //运输
    train.transport();


    //造出一汽车来
    Car car = new Car();
    //装入货物
    car.setImplementor(new Goods());
    //运输
    car.transport();
    //上客
    car.setImplementor(new Guest());
    //运输
    car.transport();


  }

}

1、分离接口及实现部分 一个实现不必一直绑定在一个接口上;
2、提高可扩充性,使扩展变得简单;

以上原文地址:http://alaric.iteye.com/blog/1918381?utm_source=tuicool

另外cbf4life的《设计模式之禅》很不错,讲的很通俗易懂。很喜欢。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值