【JAVA设计模式】之桥接模式(BridgePattern)

桥接模式的作用是将两样东西连接起来,比如桥梁把河的两岸连接起来

桥接模式把“类的功能层次结构”和“类的实现层次结构”连接起来

类的层次结构

  • 类的功能层次:父类通过定义抽象方法来定义接口API
  • 类的实现层次:子类通过实现具体方法来实现接口API

示例程序

相关类一览表

类的层次类名描述
功能层Express快递寄件
功能层EnhanceExpress(寄件)增加代收功能
实现层ICompany快递公司
实现层SunFengImpl顺丰快递
 

BridgeTest

测试类

 

 

 

 

 

 

 

示例程序类图

 

public class Express {
    private ICompany iCompany;

    public Express(ICompany iCompany) {
        this.iCompany = iCompany;
    }

    public void send() {
        iCompany.send();
    }
}
public class EnhanceExpress extends Express {
    public EnhanceExpress(ICompany iCompany) {
        super(iCompany);
    }

    public void recive() {
        System.out.println("快递人员已收件,准备发件中。。。");
        send();
    }
}
public interface ICompany {

    void send();
}

 

public class SunFengImpl implements ICompany{
    @Override
    public void send() {
        System.out.println("顺丰物流,快件已发出。。。");
    }
}
public class BridgeTest {

    public static void main(String[] args) {
        Express express = new Express(new SunFengImpl());
        EnhanceExpress enhance= new EnhanceExpress(new SunFengImpl());
        express.send();
        enhance.send();
    }
}

执行结果:

顺丰物流,快件已发出。。。
快递人员已收件,准备发件中。。。
顺丰物流,快件已发出。。。

Bridge模式使用场景

  • Abstraction(抽象化)

定义功能最上层角色Abstraction,它使用了Implementor角色的方法定义了基本功能,并保存了Implementor的实例,示例:Express

  • RefinedAbstraction(增强抽象化)

在原来Abstraction的基础上增加新功能,示例:EnhanceExpress

  • Implementor(实现者)

该角色处在“实现层”最上层,定义了具体的行为规则,示例:ICompany

  • ConcreteImplementor(具体的实现者)

它实现了Implementor定义的方法,示例:SunFengImpl

 

日常使用

桥接模式在我们web开发中也是使用最频繁的模式之一,在Controller层我们会定义各种业务处理,比如登录操作,定义UserService接口的 login() 的抽象方法,子类UserServiceImpl实现UserService的login()方法处理具体的登录操作,在Controller类中只需保存UserService对象实例。此时UserService即可认为是“桥梁”作用,连接了Controller的抽象定于与UserServiceImpl的具体实现;对UserService新增、修改的实现都不影响Controller类,以做到解耦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值