桥接模式就是创建一道桥梁来连接两种类,一般都是对抽象和实现的桥接。对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。简单实现:
抽象部分
public abstract class Coffee {
protected Additives impl;
public Coffee(Additives impl){
this.impl = impl;
}
public abstract void makeCoffee();
}
抽象部分子类:
public class LargeCoffee extends Coffee{
public LargeCoffee(Additives impl) {
super(impl);
}
@Override
public void makeCoffee() {
System.out.println("Large coffee + " + impl.addSomething());
}
}
public class SmallCoffee extends Coffee{
public SmallCoffee(Additives impl) {
super(impl);
}
@Override
public void makeCoffee() {
System.out.println("small coffee + " + impl.addSomething());
}
}
实现部分:
public interface Additives {
String addSomething();
}
实现部分具体:
public class Milk implements Additives {
@Override
public String addSomething() {
return "milk";
}
}
public class Sugar implements Additives {
@Override
public String addSomething() {
return "sugar";
}
}
测试类
public class test {
public static void main(String[] args) {
LargeCoffee largeCoffee = new LargeCoffee(new Milk());
largeCoffee.makeCoffee();
}
}
可以发现,实现和抽象部分是互不相关的两类,各自可以横向扩展,通过桥接组合在一起,实现各种功能,有很大的灵活性。