【java_设计模式】桥接模式

博客介绍了桥接模式的学习路径,指出其应用场景是将事物属性抽象出来解耦,如银行与账户体系。实现时要注意接口实现类的方法委托给抽象类。总结表明桥接模式可分离两个抽象体系,降低维护难度,拓展时需委托新类方法。

学习路径:https://coding.imooc.com/class/270.html

  • 应用场景
    可将一个事物的属性抽象出来并单独处理,可以使用该模式解耦。如XX银行的XX账户。银行可以是一个抽象体系,账户类型也可以是一个抽象体系。

  • 实现

 public static void main(String[] args) {
        /*
          传统的新建某人的某行某类型账户
          Bank bank = new ("ICBC", "活期");
          这里存在以下拓展难题:
          1. 要对银行做两个工厂读取字符串"ICBC"和"活期",维护吃力
          2. 如果再 new ("ABC","活期"), "活期"可复用的特点未体现
         */

        //  使用桥接模式处理
        //  创建一个定期类型的账户,可多次复用
        Account depositAccount = new DepositAccount();
        // 携带账户类型创建银行账户
        Bank icbcBank = new ICBCBank(depositAccount);

        // 若还需要工商银行的定期账户,只需要另外增加一个Bank的子类
        Bank ABCBank = new ABCBank(depositAccount);
        // 同理,要增加工商银行的【活期】账号,那么只需要增加一个Account的实现类
        Account savingAccount = new SavingAccount();
        Bank ABCBank2 = new ABCBank(savingAccount);

    }

  • 记得接口的实现类的方法,委托给抽象类。
public class ABCBank extends Bank {
    public ABCBank(Account account) {
        super(account);
    }
    /**
     * 真正得做到分离,一定要记得委托
     * 这里的openAccount是Bank类的操作
     * @return
     */
    @Override
    protected Account openAccount() {
        System.out.println("【打开】中国农业银行账号");
        // 这里的openAccount是Account实现类的方法,一定不能搞混了,必须要成功委托
        account.openAccount();
        return account;
    }
}
  • 总结
    桥接模式可以把连接接口实现类和抽象类,目的是把两个抽象体系分离出来,降低维护难度。若要对某个抽象体系进行拓展,只要单方面继承或者实现一个类即可,但是千万不要忘记委托新实现的类的方法。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值