Заводская модель и внедрение зависимостей - PullRequest
0 голосов
/ 16 мая 2019

В моем приложении C #, MVVM, я принял код, который генерирует объект класса.Учитывая требование, которое мне передали, мне может потребоваться создать несколько объектов на основе значения.Поэтому я решил провести рефакторинг генерации классов, используя шаблон фабрики, и это сработало для этого требования.Когда я приступил к выполнению задачи, возникло больше требований, которые включают создание объекта не только с помощью исходной строковой переменной, но и с помощью логической переменной.В дополнение к этим переменным, параметр должен быть передан в объект, что, я думаю, я должен сделать путем внедрения зависимости.Мой вопрос заключается в том, должен ли я использовать шаблон Factory в данный момент или что-то еще.Как включить булеву переменную и параметр в любой рекомендуемый шаблон проектирования.Пример кода того, что я использую, приведен ниже.

 public abstract class PivotRequestFactory
 {
    public abstract PivotRequest GetPivotRequest();
 }

public class ConcretePivotRequestFactory : PivotRequestFactory
{

    public ConcretePivotRequestFactory()
    {

    }
    public override PivotRequest GetPivotRequest()
    {
        try
        {

            return new PivotRequest();
        }
        catch (Exception ex)
        {

            throw;
        }
    }
}

private PivotRequest GetPivotRequest(string DataSetName)
    {
        PivotRequestFactory factory = null;
        try
        {
            switch (DataSetName)
            {
                case DatasetNames.Default:
                    if (IsTrue) { factory = new ConcretePivotRequestFactory(); }
                    else { factory = new ConcretePivotRequestFactory2); }
                    break;
                case DatasetNames.SoSo:
                    if (IsTrue) { factory = new ConcretePivotRequestFactory3(); }
                    else { factory = new ConcretePivotRequestFactory4(); }
                    break;
                default:
                    break;
            }
        }
        catch (Exception)
        {

            throw;
        }
        return factory.GetPivotRequest();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...