用JAVA桥接模式实现银行账户管理
时间: 2023-07-18 14:10:55 浏览: 54
好的,我可以为您解答这个问题。
在这个问题中,我们需要将银行账户管理的抽象部分与实现部分分离,使它们可以独立地变化。在这里,我们将抽象部分定义为银行账户类 `BankAccount`,并将其实现部分定义为账户管理类 `AccountManager`。
首先,我们定义一个抽象类 `BankAccount`,它包含了银行账户的一些基本属性和方法,比如账户名、余额、存款、取款等。然后我们定义具体的银行账户类(如 `SavingAccount`、`CheckingAccount` 等),它们都继承自 `BankAccount` 类,并实现其抽象方法。
接下来,我们需要定义一个桥接类 `AccountManager`,它作为连接抽象类和具体银行账户类的桥梁。`AccountManager` 类包含一个 `BankAccount` 类型的属性,表示具体银行账户的实现。在 `AccountManager` 类中,我们可以定义一些方法,比如查询余额、存款、取款等,这些方法都是通过调用 `BankAccount` 类中的方法来实现的。
最后,我们只需要在客户端代码中选择具体的银行账户类,创建一个 `AccountManager` 对象,并调用其中的方法,就可以实现银行账户管理的功能了。
下面是这个设计模式的示意代码:
```java
// 抽象类 BankAccount
public abstract class BankAccount {
protected String accountName;
protected double balance;
public BankAccount(String accountName, double balance) {
this.accountName = accountName;
this.balance = balance;
}
public abstract void deposit(double amount);
public abstract void withdraw(double amount);
public String getAccountName() {
return accountName;
}
public double getBalance() {
return balance;
}
}
// 具体银行账户类 SavingAccount
public class SavingAccount extends BankAccount {
public SavingAccount(String accountName, double balance) {
super(accountName, balance);
}
public void deposit(double amount) {
balance += amount;
System.out.println("Deposit " + amount + " to " + accountName + ", balance: " + balance);
}
public void withdraw(double amount) {
if (balance >= amount) {
balance -= amount;
System.out.println("Withdraw " + amount + " from " + accountName + ", balance: " + balance);
} else {
System.out.println("Insufficient balance!");
}
}
}
// 具体银行账户类 CheckingAccount
public class CheckingAccount extends BankAccount {
public CheckingAccount(String accountName, double balance) {
super(accountName, balance);
}
public void deposit(double amount) {
balance += amount;
System.out.println("Deposit " + amount + " to " + accountName + ", balance: " + balance);
}
public void withdraw(double amount) {
if (balance >= amount) {
balance -= amount;
System.out.println("Withdraw " + amount + " from " + accountName + ", balance: " + balance);
} else {
System.out.println("Insufficient balance!");
}
}
}
// 桥接类 AccountManager
public class AccountManager {
private BankAccount bankAccount;
public AccountManager(BankAccount bankAccount) {
this.bankAccount = bankAccount;
}
public void deposit(double amount) {
bankAccount.deposit(amount);
}
public void withdraw(double amount) {
bankAccount.withdraw(amount);
}
public void showBalance() {
System.out.println("Account: " + bankAccount.getAccountName() + ", balance: " + bankAccount.getBalance());
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
// 创建具体银行账户类对象
SavingAccount savingAccount = new SavingAccount("Saving Account", 1000);
CheckingAccount checkingAccount = new CheckingAccount("Checking Account", 2000);
// 创建桥接类对象
AccountManager savingAccountManager = new AccountManager(savingAccount);
AccountManager checkingAccountManager = new AccountManager(checkingAccount);
// 存款和取款
savingAccountManager.deposit(500);
savingAccountManager.withdraw(200);
checkingAccountManager.deposit(1000);
checkingAccountManager.withdraw(500);
// 查询余额
savingAccountManager.showBalance();
checkingAccountManager.showBalance();
}
}
```
在这个示例代码中,我们定义了一个 `BankAccount` 抽象类和两个具体银行账户类(`SavingAccount`、`CheckingAccount`)。然后我们定义了一个 `AccountManager` 桥接类,它将具体银行账户类和抽象类连接起来。
在客户端代码中,我们创建了具体银行账户类对象和桥接类对象,并调用其中的方法来实现银行账户管理的功能。
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)