java之桥接模式

桥接模式

定义

将抽象部分与他的实现部分分离,这样抽象化与实现化解耦,使他们可以独立的变化,如何实现解耦的呢,就是通过提供抽象化和实现化之间的桥接结构。

角色

在这里插入图片描述

  1. Client(客户端):外部使用程序
  2. Abstraction(抽象类):定义抽象类的接口,一般将最基础业务方法的一个纬度定义为抽象类,并在类中定义抽象方法;
  3. Implementor(实现类接口):定义实现类的接口,与Abstraction不同的另外一个纬度的基类或者是接口;
  4. RefinderAbstracion(扩充抽象类):抽象类的实现者,根据不同变化纬度对应不同类;
  5. ConcreteImplementor(具体实现类):实现抽象类接口,完成不同实现;

示例

驱动接口

public interface Driver {

	public void connect();
}

oracle驱动实现类

public class OracleDriver implements Driver {

	@Override
	public void connect() {
		System.out.println("连接oracle");
	}	
}

mysql驱动类

public class MysqlDriver implements Driver{

	@Override
	public void connect() {
		System.out.println("连接mysql");
	}

}

抽象桥接类

public abstract class MyBridge {
	private Driver driver;

	public void connect(){
		driver.connect();
	}
	
	public Driver getDriver() {
		return driver;
	}

	public void setDriver(Driver driver) {
		this.driver = driver;
	}
	
	
}

具体桥接类

public class MyBridgeImpl extends MyBridge {
	//若有需要可具体实现
}

测试类

public class BridgeTest {

	public static void main(String[] args) {
		MyBridgeImpl myBridgeImpl = new MyBridgeImpl();
		myBridgeImpl.setDriver(new OracleDriver());
		myBridgeImpl.connect();
		System.out.println("=====================");
		myBridgeImpl.setDriver(new MysqlDriver());
		myBridgeImpl.connect();
	}
}

分析

优点:

  1. 分离抽象接口及其实现部分,提高了比继承更好的解决方案。
  2. 桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原来的系统。
  3. 实现细节对客户不透明,可以隐藏实现细节.

跟策略模式对比

参考
主要不同是桥接模式的abstraction是个抽象类,还可以有实现;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值