инициализировать данные загрузки класса из файла.это строитель? - PullRequest
1 голос
/ 14 сентября 2011

Я новичок в дизайне шаблонов.
Я хочу создать экземпляр класса, скажем ClassA, и установить для некоторых его полей значения, считанные из файла конфигурации.
Если я буду отличать код класса от кода, который управляет файлом со значениями, тогда ClassA становится чистым классом "логики бизнеса".

 class ClassA {
    boolean config1;
    String originDB;
    String destDB;
    //other fields not initialized at the construction time
  }

  class ClassAFactory {
    boolean config1;
    String originDB;
    String destDB;        

    public ClassAFactory {
      //constructor of the class factory
      //load config values from file
    }

    public ClassA newInstance() {
     //create a new instance of ClassA and config fields config1, originDB, destDB
    }

  }

Я бы сказал, что это шаблон компоновщика, потому что компоновщик, похоже, заботится не только об инициализации, но и об инициализации.
Но в остальном сборщик, похоже, сосредоточен на том, чтобы разбить процесс создания на этапы, в то время как в моем случае у меня есть только один (пока составной) шаг.

Можно считать шаблоном строителя? Или это что-то другое?

Ответы [ 2 ]

2 голосов
/ 14 сентября 2011

нет шаги - нет Строитель

    ClassA a = ClassABuilder
            .config(config1)
            .originDB(originDB)
            .destDB(destDB)
            .build();
    // above reads a Builder to me and hopefully to any reader
    //   note above allows to swap, add, remove particular steps


    ClassA a = ClassAFactory.newInstance();
    // above reads Factory to me and hopefully to any reader
    //   note for reader, it's a one-step thing
1 голос
/ 14 сентября 2011

Больше похоже на шаблон фабрики, чем на строителя.Это потому, что есть только один метод, который выполняет всю работу.Как правило, у конструктора будет набор методов в стиле сеттера, которые позволят настраивать строящийся объект.

...