(九)桥接模式

2019-07-29  本文已影响0人  feiry

现在采摘水果的包装需要用到不同大小,不同材料的容器来安放,那么这个包装的内部组合会非常多,那我们就需要把它从不同的维度拆分开。


采摘水果

桥接模式

分离不同的类型,再通过属性的方式结合在一起就是桥接模式


采摘水果包装结构图
/**
 * 采摘容器
 */
public abstract class BagAbstraction {
    protected Material material;
//    protected Material material;

    public void setMaterial(Material material){
        this.material = material;
    }

    //采摘
    public abstract void pick();

}
/**
 * 材料
 */
public interface Material {
    void draw();

}
/**
 * 采摘小袋
 * Material
 */
public class SmallBag extends BagAbstraction {

    public void pick(){
        System.out.println("采摘水果开始");
        this.material.draw();
        System.out.println("采摘了一小包");
    }

}
/**
 * 包装接口
 * Material
 */
public class Paper implements Material{
    public void draw(){
        System.out.print("用纸盒");
    }

}
/**
 * 园丁采摘水果                        
 */
public class BridgeClient {

    public static void main(String[] args) {

        //袋子型号
        BagAbstraction bag = new SmallBag();

        //袋子材质
        Material material = new Paper();
        bag.setMaterial(material);

        //开始采摘
        bag.pick();
    }
}

适用场景

分离出子功能模块,再拼装的场景

总结

与适配器模式不同的是,适配器模式是为了把已有的功能组合在一起,是一种补救方式
而桥接模式是设计好的功能分离,贯彻单一职责原则

上一篇 下一篇

猜你喜欢

热点阅读