【发布时间】:2014-10-05 19:29:24
【问题描述】:
我有一个公司实体
public class Company : Entity<Company>
{
public CompanyIdentifier Id { get; private set; }
public string Name { get; private set; }
..............
..........
}
公司可以是代理商或供应商,也可以是两者或都不是。 (有更多类型)它的行为应该基于类型而改变。代理可以获得佣金,供应商可以开具发票。 设计实体或实体或值对象的最佳方式是什么?我可以选择添加一些布尔类型并检查方法中的这些值,
public class Company : Entity<Company>
{
public CompanyIdentifier Id { get; private set; }
public string Name { get; private set; }
public bool IsAgent { get; private set; }
public bool IsSupplier { get; private set; }
..........
public void Invoice()
{
if(!IsSupplier)
{
throw exception.....;
}
//do something
}
public void GetCommission(int month)
{
if(!IsAgent)
{
throw exception.....;
}
//do something
}
..........
}
说实话,我不喜欢这样。是否有任何设计模式可能有助于克服这种情况?你会做什么以及为什么要设计这个场景?
【问题讨论】:
标签: c# class design-patterns entity