我目前正在使用ASP.NET MVC3和Entity Framework 4.1 Code First开发一个应用程序,并且由于我才刚刚开始学习DDD,因此也尝试一点一点地应用DDD。
我有一个模型:
public class ClassA
{
public decimal MonthlyRate { get; set; }
public virtual decimal DailyRate
{
get { return this.MonthlyRate / 30; }
private set { }
}
}
现在,此代码有效,但是如果我在View上触发一个标志(将由用户检查该标志)以进行新的计算该怎么办。假设该标志不是将其除以30,而是将月率除以5。有什么建议吗?谢谢。
最佳答案
interface IDivideLogic
{
int DivideNumber{get;set;}
}
class DivideLogic : IDivideLogic
{
public DivideLogic()
{
DivideNumber = 30;
}
public DivideLogic(int divideNumber)
{
DivideNumber = divideNumber;
}
public int DivideNumber{get;set;}
}
public class ClassA
{
public IDivideLogic DivideLogic {get;set;}
public decimal MonthlyRate { get; set; }
public virtual decimal DailyRate
{
get { return this.MonthlyRate / DivideLogic.DivideNumber; }
private set { }
}
}
然后您可以在需要时切换
ClassA obj = new ClassA();
obj.DivideLogic = new DivideLogic(5);
这在更复杂的情况下效果很好。在您的情况下,它可能过于设计。希望你明白了