为了账号安全,请及时绑定邮箱和手机立即绑定

【学习打卡】第6天 Java设计模式精讲-Debug方式+内存分析 第十五讲

标签:
Java

【学习打卡】第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 设计图

https://img2.sycdn.imooc.com/62f1057100017a2719601088.jpg

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

测试结果如下

https://img2.sycdn.imooc.com/62f1057f0001be0309600782.jpg

桥接模式jdk当中应用解析

在jdk 当中Driver 当中是用的代码如图

https://img1.sycdn.imooc.com/62f1058b0001fd0417580520.jpg

image-20220731100716749

今天学习课程共用了1.5个小时,重新学习一下设计模式 更加清楚知道桥接模式的应用以及如何在自己项目当中去使用它  大家一起加油 💪🏻







点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消