package com.ajie.bank;
import java.util.ArrayList;
import java.util.List;
/**
* @author Mitnick
*
*/
public class Bank {
private Listaccounts;
public Bank() {
accounts = new ArrayList();
}
public synchronized boolean addAccount(Account account) {
if (null == account) {
return false;
}
accounts.add(account);
return true;
}
public synchronized boolean removeAccount(Account account) {
if (null == account) {
return false;
}
accounts.remove(account);
return true;
}
public Account searchAccount(String accountId) {
if (null == accountId) {
return null;
}
for (Account account : accounts) {
if (null == account.getId()) {
continue;
}
if (accountId.equals(account.getId())) {
return account;
}
}
return null;
}
public double getAmountOfBalance() {
if (null == accounts || accounts.isEmpty()) {
return 0;
}
double ret = 0;
for (Account account : accounts) {
if (null == account) {
continue;
}
ret += account.getBalance();
}
return ret;
}
public double getAmmoutOfOverdraw() {
if (null == accounts || accounts.isEmpty()) {
return 0;
}
double ret = 0;
for (Account account : accounts) {
if (null == account) {
continue;
}
if (!(account instanceof CreditAccount)) {
continue;
}
CreditAccount sa = (CreditAccount) account;
ret += sa.getOverdrawLimit(); // FIXME
}
return ret;
}
}
package com.ajie.bank;
/**
* @author Mitnick
*
*/
public class Account {
private String id;
private double balance;
public Account(String id) {
this(id, 0);
}
public Account(String id, double balance) {
this.id = id;
this.balance = balance;
}
public synchronized void deposit(double amout) {
if (0 == amout) {
return;
}
balance += amout;
}
public synchronized boolean withdraw(double amount) {
if (0 == amount) {
return true;
}
balance -= amount;
return true;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}
package com.ajie.bank;
/**
* @author Mitnick
*
*/
public class SaveAccount extends Account {
public SaveAccount(String id) {
this(id, 0);
}
public SaveAccount(String id, double balance) {
super(id, balance);
}
public boolean withdraw(double amount) {
return super.withdraw(amount);
}
}
package com.ajie.bank;
/**
* @author Mitnick
*
*/
public class CreditAccount extends Account {
private double overdrawLimit;
public CreditAccount(String id) {
this(id, 0);
}
public CreditAccount(String id, double balance) {
this(id, balance, 10000);
}
public CreditAccount(String id, double balance, double overdrawLimit) {
super(id, balance);
this.overdrawLimit = overdrawLimit;
}
public synchronized boolean withdraw(double amount) {
if (0 == amount) {
return false;
}
double balance = getBalance();
if (balance >= amount) {
balance -= amount;
} else {
double over = amount - balance;
overdrawLimit -= over;
}
return true;
}
public double getOverdrawLimit() {
return overdrawLimit;
}
public void setOverdrawLimit(double overdrawLimit) {
this.overdrawLimit = overdrawLimit;
}
}
package com.ajie.bank;
/**
* @author Mitnick
*
*/
public class TestBank {
public static void main(String[] args) {
Bank bank = new Bank();
CreditAccount creditAccount1 = new CreditAccount("1000001", 1000, 5000);
CreditAccount creditAccount2 = new CreditAccount("1000002", 1000, 5000);
CreditAccount creditAccount3 = new CreditAccount("1000003", 1000, 5000);
CreditAccount creditAccount4 = new CreditAccount("1000004", 1000, 5000);
CreditAccount creditAccount5 = new CreditAccount("1000005", 1000, 5000);
SaveAccount saveAccount1 = new SaveAccount("2000001", 1000);
SaveAccount saveAccount2 = new SaveAccount("2000002", 1000);
SaveAccount saveAccount3 = new SaveAccount("2000003", 1000);
SaveAccount saveAccount4 = new SaveAccount("2000004", 1000);
SaveAccount saveAccount5 = new SaveAccount("2000005", 1000);
bank.addAccount(creditAccount1);
bank.addAccount(creditAccount2);
bank.addAccount(creditAccount3);
bank.addAccount(creditAccount4);
bank.addAccount(creditAccount5);
bank.addAccount(saveAccount1);
bank.addAccount(saveAccount2);
bank.addAccount(saveAccount3);
bank.addAccount(saveAccount4);
bank.addAccount(saveAccount5);
System.out.println(bank.getAmountOfBalance());
}
}
纯手敲,如果帮助,请采纳一下