在现有的银行系统中,我们有一个类
Account
定义如下:
public class Account {
// Private part of the class
public Account(Customer accountHolder) { ... }
public Customer getAccountHolder() { ... } // Customer has a method getAge
public float getBalance() { ... }
// Other methods
/**
* @assertion.pre (amount >=0 && getBalance()-amount>=0)
**/
public void withdrawal(float amount) { ... }
/**
* @assertion.pre (amount >=0)
**/
public void deposit(float amount) { ... }
}
现在,我想实现另一种类型的帐户
SpecialAccount
,允许每个帐户提款最多达到固定的负余额。问题是Account
类无法修改,新实现的特殊账户需要使用原来Account
的服务。
如您所见,在原始版本中提款有避免负数作为余额的前提条件,但由于它需要在特定类中实现,覆盖该方法将意味着它需要使用超级版本。
如何正确实现
SpecialAccount
功能?
您可以选择其中任何一种方法来实施任何帐户类型。