Переключение логики в доменной модели - PullRequest
2 голосов
/ 20 июня 2011

В настоящее время я занимаюсь разработкой приложения с использованием 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. Есть предложения?Спасибо.

Ответы [ 3 ]

1 голос
/ 20 июня 2011

Вы можете объявить значение как свойство и назначить его из пользовательского интерфейса.

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 { }
    }
}
1 голос
/ 20 июня 2011
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);

Это хорошо работает для более сложных ситуаций.В вашей ситуации это может быть слишком запроектировано.Надеюсь, вы получите точку

1 голос
/ 20 июня 2011

Вы можете использовать шаблон стратегии для этого. Вы можете использовать различные реализации вашей логики деления. Предполагая, что вы хотите предвидеть дальнейшие изменения, это будет хорошим способом решения этой проблемы. Таким образом вы абстрагируете логику деления от другой логики, упрощая реализацию различных реализаций логики деления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...