该模式特点是将抽象部分和具体实现分离,使其都可以独立的变化,进一步解耦合
抽象部分
/**
* 账户
*/
public interface Account {
/**
* 显示账户信息
*/
void showAccount();
/**
* 打印账户信息
*/
void printAccount();
}
/**
* 银行
*/
public abstract class Bank {
protected String name;
protected Account account;
public Bank(Account account) {
this.account = account;
}
/**
* 显示账户信息
*/
abstract void showAccount();
/**
* 打印账户信息
*/
abstract void printAccount();
}
实现部分
/**
* 一类账户
*/
public class OneClassAccount implements Account {
@Override
public void showAccount() {
System.out.println("I类卡");
}
@Override
public void printAccount() {
System.out.println(" 该类卡转账额度50万,尽情享用互联网服务");
System.out.println(" 退出账户");
}
}
/**
* 二类账户
*/
public class TwoClassAccount implements Account {
@Override
public void showAccount() {
System.out.println("II类卡");
}
@Override
public void printAccount() {
System.out.println(" 该类卡转账额度20000元,尽情享用互联网服务");
System.out.println(" 退出账户");
}
}
/**
* 农业银行
*/
public class ABCBank extends Bank {
public ABCBank(Account account) {
super(account);
name = "农业银行";
}
@Override
void showAccount() {
System.out.println("***欢迎使用" + name + "自助服务***");
System.out.print(name);
account.showAccount();
}
@Override
void printAccount() {
System.out.println("账户详情:");
account.printAccount();
}
}
/**
* 工商银行
*/
public class ICBCBank extends Bank {
public ICBCBank(Account account) {
super(account);
name = "工商银行";
}
@Override
public void showAccount() {
System.out.println("***欢迎使用" + name + "自助服务***");
System.out.print(name);
account.showAccount();
}
@Override
public void printAccount() {
System.out.println("账户详情:");
account.printAccount();
}
}
调用
public class Main {
public static void main(String[] args) {
System.out.println("桥接模式");
// 农业银行
Bank abc1 = new ABCBank(new OneClassAccount());
abc1.showAccount();
abc1.printAccount();
Bank abc2 = new ABCBank(new TwoClassAccount());
abc2.showAccount();
abc2.printAccount();
// 工商银行
Bank icbc1 = new ICBCBank(new OneClassAccount());
icbc1.showAccount();
icbc1.printAccount();
Bank icbc2 = new ICBCBank(new OneClassAccount());
icbc2.showAccount();
icbc2.printAccount();
}
}
运行结果
桥接模式
***欢迎使用农业银行自助服务***
农业银行I类卡
账户详情:
该类卡转账额度50万,尽情享用互联网服务
退出账户
***欢迎使用农业银行自助服务***
农业银行II类卡
账户详情:
该类卡转账额度20000元,尽情享用互联网服务
退出账户
***欢迎使用工商银行自助服务***
工商银行I类卡
账户详情:
该类卡转账额度50万,尽情享用互联网服务
退出账户
***欢迎使用工商银行自助服务***
工商银行I类卡
账户详情:
该类卡转账额度50万,尽情享用互联网服务
退出账户