Использовать шаблон прототипа или нет - PullRequest
3 голосов
/ 28 октября 2011

У меня есть вопрос. Мне нужно создать небольшую вещь, чтобы сделать с продуктами. Теперь я могу сказать, 7 различных видов продуктов. Некоторые являются подтипами других, например

Cars
 - Vans
   - petrol
   - diesel
 - City
 - Hatchback
 - Saloon
 - Estate
   - petrol
   - diesel

Теперь, ради аргумента, все мои автомобили "Сити", "Хэтчбек" и "Седан" являются гибридными / газовыми / какими бы то ни было, и я не планирую продавать бензиновые и дизельные. Однако есть вероятность, что в будущем у меня могут появиться автомобили с бензиновым и дизельным седаном, но я не собираюсь выпускать более 20 видов продуктов. Если оно пойдет вверх, у меня будет еще 2-3 типа.

Из того, что я понимаю, Prototype Pattern может быть хорошим здесь, потому что я смогу избежать дублирования между универсалом-> бензином и фургоном-> бензином ... но опять же, автомобили фургона будут иметь другие характеристики, чем, скажем, городской автомобиль, например. максимальные размеры загрузки.

Я много читал о шаблонах проектирования, и я точно помню одну вещь - не использовать шаблон, когда он вам не нужен. Теперь вопрос - мне это нужно?

Спасибо!

Ответы [ 2 ]

1 голос
/ 28 октября 2011

Требуется ли для каждого типа автомобиля разное поведение?Бензиновый фургон действует не так, как дизельный фургон?Салон должен вести себя иначе, чем Эстейт?

Если я правильно понимаю, вам нужно нечто подобное

public enum FuelType
{
     Petrol,
     Diesel
}

public class Car
{
   public string Name {get;set;}
   public FuelType Fuel {get;set;}
}

public class Van:Car { } 
public class CityCar:Car { }

Если характеристики фургона просто разныезначений, чем Car, вам не нужно создавать подклассы, вам нужно изменить только значение свойства.Например, фургон должен иметь другие свойства или отличную реализацию методов, чтобы иметь право на подклассы.

1 голос
/ 28 октября 2011

Шаблон Decorator, вероятно, является наиболее простым в использовании и может подойти для расширения функциональности и / или характеристик конкретных объектов.

Вот несколько легких чтений: Шаблоны дизайна Head First - CH3 pdf

К вашему сведению, пара должна иметь для изучения и ссылки на шаблоны проектирования независимо от вашего языка:

1) Шаблоны дизайна Head First

2) Шаблоны для архитектуры корпоративных приложений

3) Шаблоны проектирования: элементы многоразового объектно-ориентированного программного обеспечения

И сайты:

1) DoFactory

2) Шаблоны проектирования StackOverflow Новичок

Есть еще несколько человек, мне придется их откопать.

...