桥梁模式是指通过聚合的方式(在维度抽象类里聚合实例)使抽象化和实例解耦。
如下
/**
* 礼物实例
* */
public interface GiftImpl {
}
/**
* 书
* */
public class Book implements GiftImpl{
}
/**
* 黄金
* */
public class Gold implements GiftImpl{
}
/**
* 礼物的抽象表示
* */
public class AbstractGift {
GiftImpl gift;
public AbstractGift(GiftImpl gift){
this.gift = gift;
}
}
/**
* 高雅的礼物
* */
public class ElegantGift extends AbstractGift{
public ElegantGift(GiftImpl gift) {
super(gift);
}
}
/**
* 贵重的礼物
* */
public class ValuedGift extends AbstractGift{
public ValuedGift(GiftImpl gift) {
super(gift);
}
}
public class Main {
public static void main(String[] args) {
//高雅的黄金
ElegantGift eg = new ElegantGift(new Gold());
//贵重的书
ValuedGift vg = new ValuedGift(new Book());
}
}
通过组合的方式,我们可以看到。Gift实例和Gift的抽象化描述是可以分开扩展的,礼物可以自由扩展比如足球,篮球等。礼物的抽象则可以自由扩展成实惠的,好玩的等等。
将礼物的抽象属性剥离出来单独扩展,实现了实例和抽象之间的解耦