`
return_space
  • 浏览: 20062 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

桥接模式

阅读更多

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics