设计模式-结构型-桥接模式
小于 1 分钟
1、定义
桥接模式:将抽象部分与实现部分分离,使他们都可以独立进行变化
写法
/**
* 添加物
*/
public abstract class CoffeeAdditives {
public abstract String addSomething();
}
/**
* 咖啡制造
*/
public abstract class Coffee {
protected CoffeeAdditives impl;
public Coffee(CoffeeAdditives impl) {
this.impl = impl;
}
public abstract void makeCoffee();
}
public class LargeCoffee extends Coffee{
public LargeCoffee(CoffeeAdditives impl) {
super( impl );
}
@Override
public void makeCoffee() {
System.out.println("大杯的" + impl.addSomething() + "咖啡");
}
}
public class SmallCoffee extends Coffee{
public SmallCoffee(CoffeeAdditives impl) {
super( impl );
}
@Override
public void makeCoffee() {
System.out.println("小杯的" + impl.addSomething() + "咖啡");
}
}
public class Sugar extends CoffeeAdditives {
@Override
public String addSomething() {
return "加糖";
}
}
public class Ordinary extends CoffeeAdditives {
@Override
public String addSomething() {
return "原味";
}
}
public class TestMain {
/**
*
* 桥接模式
*/
public static void main(String[] args) {
CoffeeAdditives sugar = new Sugar();
CoffeeAdditives ordinary = new Ordinary();
//大杯咖啡 原味
LargeCoffee largeCoffeeOrdinary = new LargeCoffee(ordinary);
largeCoffeeOrdinary.makeCoffee();
//小杯咖啡 原味
SmallCoffee smallCoffeeOrdinary = new SmallCoffee(ordinary);
smallCoffeeOrdinary.makeCoffee();
//大杯咖啡 加糖
LargeCoffee largeCoffeeSugar = new LargeCoffee(sugar);
largeCoffeeSugar.makeCoffee();
//小杯咖啡 加糖
SmallCoffee smallCoffeeSugar = new SmallCoffee(sugar);
smallCoffeeSugar.makeCoffee();
}
}
代码示例
https://github.com/yinlingchaoliu/23-design-pattern