桥接模式:如果你了解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