学习笔记:设计模式之桥接模式

2020-08-18  本文已影响0人  大力papa

本文仅供学习交流使用,侵权必删。
不作商业用途,转载请注明出处。

WHAT 什么是桥接

桥接UML.png

桥接模式是一种结构型的设计模式。桥接模式的核心是将抽象部分与实现部分解耦,使它们可以独立变化。我的理解是一个类有多个独立的维度,我们可以把它们抽象出来通过组合方式进行功能扩展。通过组合方式替代继承方式,防止了类爆炸。

WHY 为什么使用桥接

  1. 提高扩展性,符合开闭原则
  2. 有效减少类个数,能一定程度降低代码复杂度

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");
    }
}

持续更新...

上一篇 下一篇

猜你喜欢

热点阅读