桥接模式图文详解

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

桥接模式图文详解_第1张图片

桥接模式(Bridge)

桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。我们来看看关系图:

一
package com.atguigu.Bridge.pattern;

/**
 * 桥接模式
 * @author [email protected]
 *
 * 下午9:36:56
 */
public interface Sourceable {
	public void method();
}

二
package com.atguigu.Bridge.pattern;

public class SourceSub1 implements Sourceable {

	@Override
	public void method() {
		System.out.println("this is the SourceSub1!");

	}

}

三
package com.atguigu.Bridge.pattern;

public class SourceSub2 implements Sourceable {

	@Override
	public void method() {
		System.out.println("this is the SourceSub2");
	}

}

四
package com.atguigu.Bridge.pattern;
/**
 * 定义一个桥,持有Sourceable的一个实例
 * @author [email protected]
 *
 * 下午9:40:05
 */
public abstract class Bridge {
	private Sourceable source;
	
	public void method(){
		source.method();
	}
	
	public Sourceable getSource(){
		return source;
	}
	
	public void setSource(Sourceable sourceable){
		this.source = sourceable;
	}

}

五
package com.atguigu.Bridge.pattern;

public class MyBridge extends Bridge{
	
	public void method(){
		getSource().method();
	}
}

六
package com.atguigu.Bridge.pattern;

public class BridgeTest {
	
	public static void main(String[] args) {
		MyBridge myBridge = new MyBridge();
		
		/* 调用第一个对象 */
		SourceSub1 sourceSub1 = new SourceSub1();
		myBridge.setSource(sourceSub1);
		myBridge.method();
		
		System.out.println("--------------------");
		
		/* 调用第二个对象 */
		SourceSub2 sourceSub2 = new SourceSub2();
		myBridge.setSource(sourceSub2);
		myBridge.method();
		
	}

}

 

转载于:https://my.oschina.net/u/3744350/blog/1592878

你可能感兴趣的:(桥接模式图文详解)