我目前正在使用ASP.NET MVC3和Entity Framework 4.1 Code First开发应用程序,并且我一点一点地尝试应用DDD,因为我才开始学习它。
我有一个模特:
public class ClassA
{
public decimal MonthlyRate { get; set; }
public virtual decimal DailyRate
{
get { return this.MonthlyRate / 30; }
private set { }
}
}
现在,这段代码可以工作,但是如果我在一个新计算的View触发上有一个标志(将由用户检查),该怎么办呢。让我们说国旗而不是将它除以30,现在每月费率将除以5.任何建议?感谢。
答案 0 :(得分:1)
您可以使用策略模式。您可以使用除法逻辑的各种实现。假设您希望进一步改变,这将是解决此问题的好方法。通过这种方式,您可以将除法逻辑从其他逻辑中抽象出来,从而可以轻松实现除法逻辑的不同实现。
答案 1 :(得分:1)
您可以将值声明为属性并从UI分配。
public class ClassA
{
public decimal MonthlyRate { get; set; }
public int YourProperty {get; set;}
public ClassA(int yourProperty)
{
YourProperty = yourProperty;
}
public virtual decimal DailyRate
{
get { return this.MonthlyRate / YourProperty; }
private set { }
}
}
答案 2 :(得分:1)
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);
这适用于更复杂的情况。在你的情况下,它可能太过于设计。希望你明白这一点