- 定义:抽象部分与它的具体实现部分分离,使他们都可以独立变化
- 通过组合的方式建立两个类之间的联系,而不是继承
- 适用场景
抽象和具体之间增加更多的灵活性
一个类存在两个或多个独立变化的维度
- 缺点
增加了系统的理解与设计难度
需要正确识别出系统中两个独立变化的维度
总结:连接两个继承体系。两个继承体系自行发展。一个继承体系的抽象类使用了另一体系中的接口。通过组合的方式。
示例代码
public abstract class Bank {
protected Account account;
public Bank(Account account){
this.account=account;
}
protected abstract void openAccount();
}
public class ABCBank extends Bank{
public ABCBank(Account account) {
super(account);
}
protected void openAccount() {
System.out.println("打开一个农业银行账户");
}
}
public class ICBCBank extends Bank{
public ICBCBank(Account account) {
super(account);
}
protected void openAccount() {
System.out.println("打开一个工商银行账户");
account.openAccount();
}
}
public interface Account {
public void openAccount();
}
public class FixedAccount implements Account{
public void openAccount() {
System.out.println("打开一个定期账户");
}
}
public class SavingCount implements Account{
public void openAccount() {
System.out.println("打开一个活期账户");
}
}
Test类
public class Test {
public static void main(String[] args) {
ICBCBank bank=new ICBCBank(new FixedAccount());
bank.openAccount();
}
}