0x01:桥接模式简介
桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化,而不会直接影响到其他部分。是一种对象结构型模式,又称接口(interface)模式。UML类图如下:
主要角色如下:
public abstract class Implementor {
public abstract void operatorA();
public abstract void operatorB();
}
public class ConcreteImplementorA extends Implementor {
@Override
public void operatorA() {
System.out.println("具体实现ConcreteImplementorA的operatorA执行");
}
@Override
public void operatorB() {
System.out.println("具体实现ConcreteImplementorA的operatorB执行");
}
}
public class ConcreteImplementorB extends Implementor {
@Override
public void operatorA() {
System.out.println("具体实现ConcreteImplementorB的operatorA执行");
}
@Override
public void operatorB() {
System.out.println("具体实现ConcreteImplementorB的operatorB执行");
}
}
public abstract class Abstraction {
private Implementor implementor;
//约束子类必须实现该构造函数
public Abstraction(Implementor implementor) {
this.implementor = implementor;
}
public Implementor getImplementor() {
return implementor;
}
//自身的行为和属性
public void request() {
//TODO 可以添加操作
}
}
public class RefinedAbstraction extends Abstraction {
//覆写构造函数
public RefinedAbstraction(Implementor implementor) {
super(implementor);
}
//修正父类行为
@Override
public void request() {
super.request();
super.getImplementor().operatorA();
}
}
public class Client {
public static void main(String[] args) {
Implementor implementor1 = new ConcreteImplementorA();
Abstraction abstraction1 = new RefinedAbstraction(Implementor1);
abstraction1.request();
Implementor implementor2 = new ConcreteImplementorB();
Abstraction abstraction2 = new RefinedAbstraction(Implementor2);
abstraction2.request();
}
}
0x03:桥接模式的应用场景
因为桥接模式又称接口模式,所以可以理解为提供一个标准接口,然后多种实现。这种场景在项目开发中,在普遍不过了。
一般预警系统都提供了消息通知的功能,而消息通知的渠道多种多样,主要有站内消息、邮件消息和短信消息。
在做项目时,经常遇到一个同样的功能对接多个厂商的情况。这种情况普遍存在设备对接的项目中,之前小编在做柜面系统时,经常遇到刷卡器、身份证读取器等设备同时对接多个厂商的情况。
java领域的日志框架,接口定义与具体实现框架。常常也是基于桥接模式实现适配使用的。
桥接模式的使用场景
喜欢,在看