设计模式 | 桥接模式(bridge)
定义:
将抽象部分与它的实现部分分离,使它们都可以独立地变化
结构:(书中图,侵删)
实例:
操作父类:
package designpattern.bridge; public abstract class Operation { public abstract void operate(); }
创建订单类:
package designpattern.bridge; public class CreateOrder extends Operation { @Override public void operate() { System.out.println("创建订单"); } }
获取订单类:
package designpattern.bridge; public class GetOrders extends Operation { @Override public void operate() { System.out.println("获取订单"); } }
平台父类(聚合类):
package designpattern.bridge; public abstract class Platform { protected Operation operation; public void setOperation(Operation operation) { this.operation = operation; } public abstract void operate(); }
淘宝类:
package designpattern.bridge; public class Taobao extends Platform { @Override public void operate() { System.out.print("淘宝->"); operation.operate(); } }
京东类:
package designpattern.bridge; public class JingDong extends Platform { @Override public void operate() { System.out.print("京东->"); operation.operate(); } }
客户端:
package designpattern.bridge; public class Client { public static void main(String[] args) { Operation createOrder=new CreateOrder(); Operation getOrder=new GetOrders(); Platform tb=new Taobao(); tb.setOperation(createOrder); tb.operate(); tb.setOperation(getOrder); tb.operate(); System.out.println("=============================="); Platform jd=new JingDong(); jd.setOperation(createOrder); jd.operate(); jd.setOperation(getOrder); jd.operate(); } }
结果输出:
淘宝->创建订单 淘宝->获取订单 ============================== 京东->创建订单 京东->获取订单
番外:
然后在《effective java》这本书也看到了类似的内容,角度又有些不同:
总结:
关于上图说的命令模式,可见:设计模式 | 命令模式(Command)