桥接方式
桥接模式
桥接模式:如果你了解JDBC的DriverManager设计思想,基本就理解了该模式。
该模式比较复杂,也是抽象层次比较高的模式。
具体思想:有一个接口,该接口有很多种具体实现,客户端调用那一个具体的实现,是通过接口管理器进行分析调用。接口管理器就是客户端与服务端的“桥”。
在JDBC中,DriverManager就是桥,Driver就是接口,各个数据库厂商的实现就是具体实现。
根据使用的数据库不同,DriverManager给我们生产的Driver就不同。
具体实现代码如下:
package com.mkf.pattern; public interface InterfaceOne { public void operation(); } package com.mkf.pattern.impl; import com.mkf.pattern.InterfaceOne; public class ClassOne implements InterfaceOne { @Override public void operation() { System.out.println("第一种业务 " + ClassOne.class.getName()); } } package com.mkf.pattern.impl; import com.mkf.pattern.InterfaceOne; public class ClassTwo implements InterfaceOne { @Override public void operation() { System.out.println("第二种业务 " + ClassTwo.class.getName()); } } package com.mkf.bridge; import com.mkf.pattern.InterfaceOne; public abstract class Bridge { private InterfaceOne io; public InterfaceOne getIo() { return io; } public void setIo(InterfaceOne io) { this.io = io; } public void operation() { io.operation(); } } package com.mkf.bridge; public class MyBridge extends Bridge { @Override public void operation() { getIo().operation(); } } package com.mkf; import com.mkf.bridge.Bridge; import com.mkf.bridge.MyBridge; import com.mkf.pattern.impl.ClassOne; import com.mkf.pattern.impl.ClassTwo; public class TestBridge { /** * @param args */ public static void main(String[] args) { Bridge bridge = new MyBridge(); ClassOne co = new ClassOne(); ClassTwo ct = new ClassTwo(); bridge.setIo(co); bridge.operation(); bridge.setIo(ct); bridge.operation(); } }
执行结果
第一种业务 com.mkf.pattern.impl.ClassOne
第二种业务 com.mkf.pattern.impl.ClassTwo