谁能告诉我哪种设计最适合这种情况?

我有名为 BasicAccountSavingAccountCurrentAccount 的类。
SavingAccountCurrentAccount 应该具有 BasicAccount 的所有功能。之后可能会引入一个名为 AdvanceAccount 的新帐户,它应该具有 CurrentAccountSavingAccount 的所有功能。我应该如何设计结构?

我的答案:

  • BasicAccount 保持抽象,SavingAccount 也是抽象的,并实现 BasicAccount
  • 创建一个接口(interface) ICurrentAccount 和 currentaccount 实现 BasicAccountICurrentAccount ,
  • 如果我们有 AdvanceAccount 则用 SavingAccountICurrentAccount 实现它。

  • 有没有更好的办法?这是在面试中问我的,我猜面试官对我的回答不满意。

    最佳答案

    我会使用这样的东西:

    abstract class BasicAccount {}
    
    interface ISavingAccount {}
    interface ICurrentAccount {}
    
    class SavingAccount : BasicAccount, ISavingAccount {}
    class CurrentAccount : BasicAccount, ICurrentAccount {}
    class AdvanceAccount : BasicAccount, ISavingAccount, ICurrentAccount {}
    

    如果 SavingAccountCurrentAccount 有很多功能,可以在 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
    请注意,SavingAccountCurrentAccountAdvanceAccount 的直接实例化只是一个示例。 IRL 你可能会使用 IoC 容器。

    关于c# - 哪种设计最适合这种情况?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33031344/

    10-11 02:30