学习路径: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;
}
}
- 总结
桥接模式可以把连接接口实现类和抽象类,目的是把两个抽象体系分离出来,降低维护难度。若要对某个抽象体系进行拓展,只要单方面继承或者实现一个类即可,但是千万不要忘记委托新实现的类的方法。

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

被折叠的 条评论
为什么被折叠?



