《Android源码设计模式解析与实战》读书笔记-桥接模式分析

2017-04-23  本文已影响10人  appcompat_v7

介绍和介绍

桥接模式也成为桥梁模式,是将抽象部分和实现部分分离,使他们可以独立地进行变化。

简单实现

public interface Implementor {

    /**
     * 抽象部分的具体方法
     */
    void operationImpl();

}
public class ImplementorA implements Implementor {
    @Override
    public void operationImpl() {
        //具体实现A
    }
}
public class ImplementorB implements Implementor {
    @Override
    public void operationImpl() {
        //具体实现B
    }
}
public abstract class Abstraction {

    Implementor implementor;

    public Abstraction(Implementor implementor) {
        this.implementor = implementor;
    }

    //抽象类的功能
    public void operation(){
        implementor.operationImpl();
    }
}
public class RefinedAbstration extends Abstraction {
    public RefinedAbstration(Implementor implementor) {
        super(implementor);
    }

    /**
     * 对父类方法的扩展
     */
    public void refinedOperation(){

    }
}

实例

现在有四种咖啡, 大杯加糖,大杯原味,小杯不加糖,小杯原味。本质上讲,一共有两种变化,大小杯+是否加糖。

public abstract class CoffeeAdditives {

    /**
     * 由子类决定添加何种添加物
     * @return
     */
    abstract String add();

}
public abstract class Coffee {
    protected  CoffeeAdditives coffeeAdditives;

    public Coffee(CoffeeAdditives coffeeAdditives) {
        this.coffeeAdditives = coffeeAdditives;
    }
    
    /**
     * 具体制作过程由子类决定
     */
    public abstract void makeCoffee();
}
public class Main {

    public static void main(String[] args) {
        Ordinary ordinary = new Ordinary();
        Sugar sugar = new Sugar();

        LargeCoffee largeCoffee1 = new LargeCoffee(ordinary);
        LargeCoffee largeCoffee2 = new LargeCoffee(sugar);
        
        SmallCoffee smallCoffee1 = new SmallCoffee(ordinary);
        SmallCoffee smallCoffee2 = new SmallCoffee(sugar);

    }

}

这样一个简单的桥接模式应用就完成了。如果再增加一种中杯咖啡,只要再扩展一个 MiddleCoffee 子类就可以了。

使用场景

多维度变化类或者说多个树状类之间的耦合就可以使用桥接模式来实现解耦。

上一篇下一篇

猜你喜欢

热点阅读