桥接模式(Bridge pattern)属于结构型模式。是用于把抽象化与实现化解耦,使得二者可以独立变化。当一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。就可以用桥接模式。
简单的demo:
比如食物有牛奶,米饭,香蕉。我要吃饭就吃从这些食物中选。桥接模式可以将抽象的我要吃的那顿饭和实体的食物解耦。
食物抽象类:
public interface Food {
void getFood();
}
具体的食物:
public class Banana implements Food{
@Override
public void getFood() {
System.out.println("一根香蕉");
}
}
public class Milk implements Food{
@Override
public void getFood() {
System.out.println("一杯牛奶");
}
}
public class Rice implements Food{
@Override
public void getFood() {
System.out.println("一份米饭");
}
}
桥接类,一顿饭:
public abstract class Meal {
protected Food food;
abstract void eatMeal();
}
具体的类,我每天吃的早饭:
public class MyMorningMeal extends Meal {
@Override
void eatMeal() {
System.out.println("我在吃早餐:");
food = new Milk();
food.getFood();
}
}
调用:
Meal myMeal = new MyMorningMeal();
myMeal.eatMeal();
输出结果:
我在吃早餐:
一杯牛奶
优点:抽象和实现的分离,扩展性比较好