S06 桥接模式 示例

示例类图

桥接模式.png

示例代码

继承结构1的抽象层
public interface Account {
    Account openAccount();
    void showAccountType();
}
继承结构1的实现层
  • 继承结构1是可以无限扩展的;
public class DepositAccount implements Account {
    @Override
    public Account openAccount() {
        System.out.println("打开定期账号");
        return new DepositAccount();
    }

    @Override
    public void showAccountType() {
        System.out.println("这是一个定期账号");
    }
}

public class SavingAccount implements Account {
    @Override
    public Account openAccount() {
        System.out.println("打开活期账号");
        return new SavingAccount();
    }

    @Override
    public void showAccountType() {
        System.out.println("这是一个活期账号");
    }
}
继承结构2的抽象层
  • 通过组合的方式实现两个继承机构的桥接;
  • 桥接使得2个继承结构可以随意的排列组合;
public abstract class Bank {

    protected Account account;

    public Bank(Account account){
        this.account = account;
    }

    abstract Account openAccount();

}
继承结构2的实现层
  • 继承结构2也是可以无限扩展的;
public class ABCBank extends Bank {

    public ABCBank(Account account) {
        super(account);
    }

    @Override
    Account openAccount() {
        System.out.println("打开中国农业银行账号");
        account.openAccount();
        return account;
    }

}

public class ICBCBank extends Bank {

    public ICBCBank(Account account) {
        super(account);
    }

    @Override
    Account openAccount() {
        System.out.println("打开中国工商银行账号");
        account.openAccount();
        return account;
    }

}
客户端
public class Test {
    public static void main(String[] args) {
        Bank icbcBank = new ICBCBank(new DepositAccount());
        Account icbcAccount = icbcBank.openAccount();
        icbcAccount.showAccountType();

        System.out.println();

        Bank icbcBank2 = new ICBCBank(new SavingAccount());
        Account icbcAccount2 = icbcBank2.openAccount();
        icbcAccount2.showAccountType();

        System.out.println();

        Bank abcBank = new ABCBank(new SavingAccount());
        Account abcAccount = abcBank.openAccount();
        abcAccount.showAccountType();
    }
}

输出:

打开中国工商银行账号
打开定期账号
这是一个定期账号

打开中国工商银行账号
打开活期账号
这是一个活期账号

打开中国农业银行账号
打开活期账号
这是一个活期账号
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.初识桥接模式 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 Abstraction:抽象部分的接口。...
    王侦阅读 4,494评论 0 7
  • 0.提前说明 模式选择的方法1)模式的功能——看是否能解决问题2)模式的本质——看模式是否主要用来解决这类问题3)...
    王侦阅读 4,853评论 0 1
  • 在正式介绍桥接模式之前,我先跟大家谈谈两种常见文具的区别,它们是毛笔和蜡笔。假如我们需要大中小3种型号的画笔,能够...
    justCode_阅读 5,758评论 0 7
  • 目录 本文的结构如下: 引言 什么是桥接模式 模式的结构 典型代码 代码示例 优点和缺点 适用环境 模式应用 一、...
    w1992wishes阅读 5,724评论 0 6
  • 【学习难度:★★★☆☆,使用频率:★★★☆☆】直接出处:桥接模式梳理和学习:https://github.com/...
    BruceOuyang阅读 4,562评论 0 2

友情链接更多精彩内容