美文网首页
学习笔记:设计模式之桥接模式

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

作者: 大力papa | 来源:发表于2020-08-18 17:01 被阅读0次

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

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

    持续更新...

    相关文章

      网友评论

          本文标题:学习笔记:设计模式之桥接模式

          本文链接:https://www.haomeiwen.com/subject/qdbqjktx.html