2013-04-10 1 views
0

мне нужна ваша помощь, пожалуйста, У меня есть комплекс сети представлен в виде гиперграфа
HyperGraph вершин имеет различные типы: изображение, бирка ....
я должен создать тысячи вершин
будет сложно создать его вручную!
так я думал, что завод рисунок может помочь мне в этом случае
, но каждый тип вершина имеет свои специфические приличий, что я должен передать его в качестве параметра конструктору
ли завод шаблон создать объект только с конструктором по умолчанию

так фабричный метод является правильным выбором в этом случае? quick diagram

ответ

3

Там нет ничего плохого с заводом, который имеет метод создания, который принимает один или несколько параметров

Car blueCar = carFactory.create(CarColor.BLUE); 
Car redCar = carFactory.create(CarColor.RED); 

или завод, который имеет несколько методов создания:

Car blueCar = carFactory.createBlueCar(); 
Car redCar = carFactory.createRedCar(); 

Альтернатива Фабрика, которую также можно было бы рассмотреть в зависимости от варианта использования, - это шаблон Builder. Строитель только один метод создания без параметров, но он также имеет методы, которые устанавливают свойства объектов, которые будут созданы им:

carBuilder.setColor(CarColor.BLUE); 
Car blueCar = carBuilder.create(); 
carBuilder.setColor(CarColor.RED); 
Car redCar = carBuilder.create(); 

Как метод создания фактически создает объект внутренне деталь реализации влево к себе. Это может быть, например:

  • Вызвать конструктор с параметрами
  • Invoke конструктор по умолчанию, а затем вызвать некоторые сеттеров на возвращенном объекте, чтобы изменить его атрибуты
  • Instantiate другого подкласса в зависимости от параметров
  • или их комбинация
+0

можно использовать как заводской, так и строительный шаблон – nawara

+0

@nawara Sure. Когда вы захотите, вы можете объединить все три шаблона выше в одном объекте Creator, который устанавливает некоторые атрибуты через сеттеры, имеет несколько методов создания и делает некоторые из методов создания требующими дополнительных параметров. Но если полученный код легко читать, а поддерживать - это другой вопрос. – Philipp

+0

Я попытаюсь применить эту идею спасибо – nawara

0

Заводской метод обычно используется для создания объектов без необходимости указания точного класса объекта, который будет создан д.

Если у вас разные реализации вершин, это может быть вашим выбором.

+0

Как говорится в книге GOF: «Определите интерфейс для создания объекта, но пусть классы, реализующие интерфейс, решают, какой класс должен быть создан. Метод Factory позволяет создавать экземпляр класса к подклассам ». –

Смежные вопросы