现在采摘水果的包装需要用到不同大小,不同材料的容器来安放,那么这个包装的内部组合会非常多,那我们就需要把它从不同的维度拆分开。
采摘水果
桥接模式
分离不同的类型,再通过属性的方式结合在一起就是桥接模式
采摘水果包装结构图
/**
* 采摘容器
*/
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();
}
}
适用场景
分离出子功能模块,再拼装的场景
总结
与适配器模式不同的是,适配器模式是为了把已有的功能组合在一起,是一种补救方式
而桥接模式是设计好的功能分离,贯彻单一职责原则
网友评论