桥接模式

        桥接模式它是一种结构模式,主要解决的是:由于实际的需要,某个类具有2个或2个以上的维度变化,如果只是使用继承将无法实现这种需求。举个例子来说吧,买房子有豪宅和经济使用房,为了满足客户的需求可以自由选择是否带花园的房子。那就有:不带花园的豪宅、带花园的豪宅和不带花园的经济房、带花园的经济房。若客户的需求变了,房子要带后花园和前花园,这时候该如何实现。使用桥接模式就可以实现,使用前面将的策略模式也可以。下面讲解桥接模式的实现实例:

1.

package com.lanp.bridge;

/**
 * 房子风格接口
 * @author LanP
 * @version v1.0
 */
public interface IMyHouseStyle {
 String getHouseStyle(String type);
}

 

2.

package com.lanp.bridge;

/**
 * 没有花园的房子,实现了房子风格接口
 * @author LanP
 * @version v1.0
 */
public class MyNoGardenHouse implements IMyHouseStyle {

 @Override
 public String getHouseStyle(String type) {
  return type + " : 没有花园";
 }
}

 

3.

package com.lanp.bridge;

/**
 * 有花园的房子,实现了房子风格接口
 * @author LanP
 * @version v1.0
 */
public class MyHaveGardenHhouse implements IMyHouseStyle {

 @Override
 public String getHouseStyle(String type) {
  return type + " : 有花园";
 }
}

 

4.

package com.lanp.bridge;

/**
 * 房子工具类,用于组合不同风格的房子
 * @author Administrator
 *
 */
public abstract class MyAbstractHouse {
 protected IMyHouseStyle myHouseStyle;
 
 public MyAbstractHouse(IMyHouseStyle myHouseStyle) {
  this.myHouseStyle = myHouseStyle;
 }
 
 public abstract void live();
}

 

5.

package com.lanp.bridge;

/**
 * 豪宅
 * @author LanP
 * @version v1.0
 */
public class MyLuxuryHouse extends MyAbstractHouse {

 public MyLuxuryHouse(IMyHouseStyle myHouseStyle) {
  super(myHouseStyle);
 }

 @Override
 public void live() {
  System.out.println(myHouseStyle.getHouseStyle("豪宅"));
 }

}

 

6.

package com.lanp.bridge;

/**
 * 经济适用房
 * @author LanP
 * @version v1.0
 */
public class MyEconomyHouse extends MyAbstractHouse {

 public MyEconomyHouse(IMyHouseStyle myHouseStyle) {
  super(myHouseStyle);
 }

 @Override
 public void live() {
  System.out.println(myHouseStyle.getHouseStyle("经济适用房"));
 }

}

 

7.

package com.lanp.bridge;

/**
 * 测试房子的类
 * @author LanP
 * @version v1.0
 */
public class TestMyHouse {

 public static void main(String[] args) {
  IMyHouseStyle noGardenHouse = new MyNoGardenHouse();
  IMyHouseStyle haveGardenHhouse = new MyHaveGardenHhouse();
  
  //没有花园的豪宅
  new MyLuxuryHouse(noGardenHouse).live();
  //有花园的豪宅
  new MyLuxuryHouse(haveGardenHhouse).live();
  //没有花园的经济房
  new MyEconomyHouse(noGardenHouse).live();
  //有花园的经济房
  new MyEconomyHouse(haveGardenHhouse).live();
 }

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值