谁能告诉我哪种设计最适合这种情况?
我有名为 BasicAccount
、 SavingAccount
和 CurrentAccount
的类。SavingAccount
和 CurrentAccount
应该具有 BasicAccount
的所有功能。之后可能会引入一个名为 AdvanceAccount
的新帐户,它应该具有 CurrentAccount
和 SavingAccount
的所有功能。我应该如何设计结构?
我的答案:
BasicAccount
保持抽象,SavingAccount
也是抽象的,并实现 BasicAccount
ICurrentAccount
和 currentaccount 实现 BasicAccount
和 ICurrentAccount
, AdvanceAccount
则用 SavingAccount
和 ICurrentAccount
实现它。 有没有更好的办法?这是在面试中问我的,我猜面试官对我的回答不满意。
最佳答案
我会使用这样的东西:
abstract class BasicAccount {}
interface ISavingAccount {}
interface ICurrentAccount {}
class SavingAccount : BasicAccount, ISavingAccount {}
class CurrentAccount : BasicAccount, ICurrentAccount {}
class AdvanceAccount : BasicAccount, ISavingAccount, ICurrentAccount {}
如果
SavingAccount
和 CurrentAccount
有很多功能,可以在 AdvanceAccount
实现中使用聚合:class AdvanceAccount : BasicAccount, ISavingAccount, ICurrentAccount
{
private readonly SavingAccount savingAccount;
private readonly CurrentAccount currentAccount;
public AdvanceAccount()
{
savingAccount = new SavingAccount(...);
currentAccount = new CurrentAccount(...);
}
// redirect ISavingAccount and ICurrentAccount implemetation
// to savingAccount and currentAccount respectively
}
UPD 。
请注意,
SavingAccount
中 CurrentAccount
和 AdvanceAccount
的直接实例化只是一个示例。 IRL 你可能会使用 IoC 容器。关于c# - 哪种设计最适合这种情况?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33031344/