本文仅供学习交流使用,侵权必删。
不作商业用途,转载请注明出处。
WHAT 什么是桥接
桥接UML.png桥接模式是一种结构型的设计模式。桥接模式的核心是将抽象部分与实现部分解耦,使它们可以独立变化。我的理解是一个类有多个独立的维度,我们可以把它们抽象出来通过组合方式进行功能扩展。通过组合方式替代继承方式,防止了类爆炸。
WHY 为什么使用桥接
- 提高扩展性,符合开闭原则
- 有效减少类个数,能一定程度降低代码复杂度
HOW 桥接的实现(JAVA)
场景:前段时间开发一个融资申请的功能刚好用上了桥接模式。该功能主要面向是企业的上游供应商和下游经销商,面向不同的业务类型客户融资申请有各自的具体逻辑。而企业的融资业务是与各个银行合作,每间银行各自的申请业务逻辑各不相同。在这个业务场景下采取桥接模式,不同业务类型的处理逻辑是一个独立的维度,各银行申请逻辑又是一个独立维度,将两个维度通过组合方式实现不同融资申请功能代码。
- 抽象类
/**
* 商户类型抽象类
*/
public abstract class AbstractApply {
protected IBankApplyService bankApplyService;
public abstract void apply();
}
/**
* 经销商类型处理
*/
public class DistributorApply extends AbstractApply {
public DistributorApply(IBankApplyService bankApplyService) {
this.bankApplyService = bankApplyService;
}
@Override
public void apply() {
System.out.println("DistributorApply");
bankApplyService.apply();
}
}
/**
* 供应商类型处理
*/
public class SupplierApply extends AbstractApply {
public SupplierApply(IBankApplyService bankApplyService) {
this.bankApplyService = bankApplyService;
}
@Override
public void apply() {
System.out.println("SupplierApply");
bankApplyService.apply();
}
}
- 实现类
/**
* 申请接口类
*/
public interface IBankApplyService {
void apply();
}
/**
* 交行申请处理
*/
public class CommbankApplyServiceImpl implements IBankApplyService{
@Override
public void apply() {
System.out.println("CommbankApply");
}
}
/**
* 网商申请处理
*/
public class MybankApplyServiceImpl implements IBankApplyService {
@Override
public void apply() {
System.out.println("MybankApply");
}
}
/**
* 微众申请处理
*/
public class WebankApplyServiceImpl implements IBankApplyService {
@Override
public void apply() {
System.out.println("WebankApply");
}
}
网友评论