简介: 将抽象部分与实现部分分离,使它们都可以独立的变化。桥接模式是一种结构式模式。
代码示例:
操作接口
/\*\*
\* @author
\* @since 2019/4/12
\*/
public interface Implementor {
void operationImpl();
}
抽象服务类
/\*\*
\* @author
\* @since 2019/4/12
\*/
public abstract class AbstractionService {
private Implementor implementor;
public AbstractionService(Implementor implementor) {
this.implementor = implementor;
}
/\*\*
\* 其他操作
\*/
public abstract void otherOperation();
/\*\*
\* 操作
\*/
public void operation() {
implementor.operationImpl();
}
}
实现独立业务
/\*\*
\* @author
\* @since 2019/4/12
\*/
public class ServiceImpl1 implements Implementor {
/\*\*
\* 操作
\*/
@Override
public void operationImpl() {
System.out.println("业务1的操作");
}
}
实现独立业务
/\*\*
\* @author
\* @since 2019/4/12
\*/
public class ServiceImpl2 implements Implementor {
/\*\*
\* 操作
\*/
@Override
public void operationImpl() {
System.out.println("业务2的操作");
}
}
实现其他业务公共业务
/\*\*
\* @author
\* @since 2019/4/12
\*/
public class Service extends AbstractionService {
public Service(Implementor implementor) {
super(implementor);
}
@Override
public void otherOperation() {
System.out.println("其他业务");
}
}
测试
/\*\*
\* 桥接模式测试
\*/
@Test
public void bridgeTest() {
Implementor impl=new ServiceImpl2();
AbstractionService service=new Service(impl);
service.operation();
service.otherOperation();
}
优点:
- 将固定业务和非固定业务做一次抽象处理,减少了系统复杂程度,也增加了复用性
场景:
- 当有公共业务又有独立业务的时候,可以考虑采用这种模式实现
- 如果希望实现部分的修改,不会对客户产生影响,可以采用桥接模式,客户是面向抽象的接口在运行。
- 实现部分的修改,可以独立于抽象部分,也就不会对客户产生影响了,也可以说对客户是透明的。