gpt4 book ai didi

c# - 哪种设计最适合这种情况?

转载 作者:太空狗 更新时间:2023-10-30 00:50:14 24 4
gpt4 key购买 nike

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

我有名为 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
请注意,在 AdvanceAccount 中直接实例化 SavingAccountCurrentAccount 只是一个示例。 IRL 你可能会使用 IoC 容器。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com