Factory Pattern - когда вы говорите, что вам нужен специализированный завод - PullRequest
2 голосов
/ 29 марта 2010

У меня небольшой конструктивный кризис, я делаю класс самолета, который состоит из

двигателя

2 крыла

и N посадочных мест

Двигатель принимает размеры двигателя, и крылья имеют размах.

было бы все еще возможно иметь PlaneFactory, когда фабрике, возможно, придется использовать несколько параметров для настройки самолета (крылья), двигатель, нет мест)

заранее спасибо

кости

Ответы [ 2 ]

4 голосов
/ 29 марта 2010

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

Вы можете легко применить известный пример пиццы, найденный в Википедии, к вашей проблеме, у класса builder будут такие методы, как build wings, build engine .... и, наконец, getplane () у вас могут быть разные классы компоновщика, которые реализуют абстрактный класс компоновщика, каждый компоновщик создает свою плоскость (используя разные компоненты)

1 голос
/ 29 марта 2010

Это зависит от того, что именно вам нужно, вы можете использовать больше шаблонов дизайна. Фабричный метод - это хорошая идея для сложного создания, это и есть точка паттерна. Если вы хотите построить самолет постепенно, особенно когда вам нужно будет работать с частями самолета еще до того, как весь самолет будет закончен (например, вам не нужны крылья, чтобы продавать билеты на места:)) ...), чем Шаблон строителя действительно то, что вам нужно. Также может случиться так, что вы создадите много самолетов, и у них у всех будет много крыльев и сидений, которые одинаковы (например, у вас три стандартных типа двигателей), чем вы можете использовать шаблон Flyweight, поэтому каждый самолет с крыльями одного типа будет использовать точно такие же крылья (совершенно нереально:) ...). Может также случиться, что создание панели управления для самолета потребует много работы, которую можно сделать заранее, а не просто скопировать - это шаблон Prototype. Я думаю, что это, скорее всего, вам может понадобиться, для более конкретного ответа, вы должны дать больше информации о том, что вам нужно.

...