我正在尝试一些新事物而且我遇到了一个问题。我知道这件事有些缺失,但我不知道它是什么。
我有一个班级(Account
)和一个枚举AccountType
,我想做的是创建一个新帐户:
Account account = new Account()
{
// Make it known that this particular account is of type TransactionAccount.
}
public enum TypeOf
{
Transaction,
Savings
}
public TypeOf AccountType { get; set; }
所以稍后我可能会这样做:
if(account.AccountType == TypeOf.Transaction) { // Do something. }
或:
if(account is AccountType.Savings) { // Do something. }
等
我该怎么做?
答案 0 :(得分:3)
你想做什么会违反Liskov替代原则。更好的设计是拥有Account的子类并利用多态性。
通过这种方式,您还可以遵守开放式原则,并且当图片中出现新类型的帐户时,您无需添加新的if
分支。
答案 1 :(得分:2)
您的班级设计原则上是有效的。您只需存储帐户类型:
Account account = new Account()
{
AccountType = TypeOf.Transaction,
};
您可能应该将TypeOf
重命名为AccountType
。什么" TypeOf"你刚才听到的意思是什么?这不代表任何意思。不是一个好名字。