Note

春蚕到死丝方尽,人至期颐亦不休,一息尚存须努力,留作青年为范畴。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

介绍

意图:将抽象部分与它的实现部分分离,使它们都可以独立地变化。

使用场景:当一个接口中有多个方法定义,它的方法有多种有不同的实现,为了避免在子类中重复的定义相同的方法.

 

代码:

//剥离功能1接口

package note.com.bridge;

/**
 * 颜色接口
 * @author lxz
 *
 */
public interface IColour {
    
    public void buildColour();
    
}

 

//功能1实现

package note.com.bridge;

public class Blue implements IColour{

    public void buildColour() {
        System.out.println("蓝色");
    }

}
package note.com.bridge;

public class Red implements IColour{

    public void buildColour() {
        System.out.println("红色");
    }

}

//剥离功能2接口

package note.com.bridge;

/**
 * 味道接口
 * @author lxz
 *
 */
public interface ITaste {

    public void buildTaste();
    
}

//功能2实现

package note.com.bridge;

/**
 * 甜味
 * @author lxz
 *
 */
public class Sweet implements ITaste{

    public void buildTaste() {
        System.out.println("甜味");
    }

}
package note.com.bridge;

/**
 * 酸味
 * @author lxz
 *
 */
public class Sour implements ITaste{

    public void buildTaste() {
        System.out.println("酸味");
    }

}

 

 

//真正的功能接口

package note.com.bridge;

/**
 * 饮料基类
 * @author lxz
 *
 */
public abstract class ADrink {

    private IColour colour = null;
    
    private ITaste taste = null;
    
    public ADrink(IColour colour,ITaste taste){
        this.colour = colour;
        this.taste = taste;
    }
    
    public abstract void finish();

    public IColour getColour() {
        return colour;
    }

    public void setColour(IColour colour) {
        this.colour = colour;
    }

    public ITaste getTaste() {
        return taste;
    }

    public void setTaste(ITaste taste) {
        this.taste = taste;
    }
    
    
    
}

 

 

//功能接口实现类

package note.com.bridge;

public class Drink extends ADrink{

    public Drink(IColour colour,ITaste taste) {
        super(colour,taste);
    }
    
    @Override
    public void finish() {
        System.out.println("酒:");
        getColour().buildColour();
        getTaste().buildTaste();
    }

}

//测试类

package note.com.bridge;

public class DrinkTest {

    public static void main(String[] args) {
        IColour blue = new Blue();
        ITaste sweet = new Sweet();
        Drink drink1 = new Drink(blue,sweet); 
        drink1.finish();
        IColour red = new Red();
        ITaste sour = new Sour();
        Drink drink2 = new Drink(red,sour); 
        drink2.finish();
    }
}

//结果

酒:
蓝色
甜味
酒:
红色
酸味

 

posted on 2016-03-02 17:34  'Note'  阅读(304)  评论(0编辑  收藏  举报