【学习打卡】第6天 Java设计模式精讲-Debug方式+内存分析 第十五讲
课程名称:Java设计模式精讲-Debug方式+内存分析,真正学懂设计模式
课程章节: 桥接模式+Coding+源码解析
主讲老师:Geely
课程内容:
今天学习的内容包括:
什么是桥接模式 桥接模式 优点 缺点 Coding 源码解析 以及在业务上的应用
课程收获:
桥接设计模式
1.定义
将抽象部分与它的具体实现部分分离 使它们都可以独立地变化 解耦
1.1 特点
通过组合的方式建议两个类之间联系,而不是继承
1.2 类型 : 结构型
2.适用场景
1、抽象和具体实现之间增加更多的灵活性
2、一个类存在两个或多个独立变化的维度 且这两个或多个维度都需要独立进行扩展
3、不希望使用继承 或因为多层继承导致系统类的个数增加
3.缺点
1.增加了系统的理解与设计难度
2.需要正确地设别出系统中两个独立变化的维度
4.优点
1.分离抽象部分及具体实现部分 解耦
2.提高了系统的可扩展性
3.符合合成复用原则
4.符合开闭原则
5.桥接-相关的设计模式
桥接模式和组合模式
桥接模式和适配器模式
6.uml 设计图
8.代码如下
package com.zw.design.pattern.creational.structural.bridge; /*** * 银行账号 */ public interface Account { Account openAccount(); void showAccountType(); } package com.zw.design.pattern.creational.structural.bridge; /*** * 定期账号 */ public class DepositAccount implements Account { @Override public Account openAccount() { System.out.println("打开定期账号"); return new DepositAccount(); } @Override public void showAccountType() { System.out.println("这是一个定期账号"); } } package com.zw.design.pattern.creational.structural.bridge; public class SavingAccount implements Account{ @Override public Account openAccount() { System.out.println("打开活期账号"); return new SavingAccount(); } @Override public void showAccountType() { System.out.println("这是一个活期账号"); } }
package com.zw.design.pattern.creational.structural.bridge; public abstract class Bank { protected Account account; public Bank(Account account){ this.account=account; } abstract Account openAccount(); } package com.zw.design.pattern.creational.structural.bridge; /**** * 建设银行 */ public class CCBBank extends Bank { public CCBBank(Account account) { super(account); } @Override Account openAccount() { System.out.println("打开建设银行的账户"); return account.openAccount(); } } package com.zw.design.pattern.creational.structural.bridge; /**** * 招商银行 */ public class CMBBank extends Bank { public CMBBank(Account account) { super(account); } @Override Account openAccount() { System.out.println("打开招商银行账号"); return account.openAccount(); } }
3.测试类
package com.zw.design.pattern.creational.structural.bridge; public class Test { public static void main(String[] args) { Bank cmb=new CMBBank(new DepositAccount()); cmb.openAccount().showAccountType(); Bank cmb2=new CMBBank(new SavingAccount()); cmb2.openAccount().showAccountType(); Bank ccb=new CCBBank(new SavingAccount()); ccb.openAccount().showAccountType(); } }
测试结果如下
桥接模式jdk当中应用解析
在jdk 当中Driver
当中是用的代码如图
今天学习课程共用了1.5个小时,重新学习一下设计模式 更加清楚知道桥接模式的应用以及如何在自己项目当中去使用它 大家一起加油 💪🏻