Пример: у меня есть несколько типов, например Колесо, Тормоз, Двигатель, Сцепление, Автобокс, Ручной ящик, Электрическое окно, Задний датчик парковки, Сиденья с подогревом. Все они наследуют интерфейс маркера ICarPart (может быть атрибутом (аннотация Java), но на данном этапе это не имеет значения).
Затем я пишу свой класс автомобилей, который может представлять все типы автомобилей, например,
class Car
{
string Name;
DateTime creationDate;
string ID;
IList<ICarPart> parts;
}
Я тогда пишу фабрику по созданию автомобилей. Фабрика может ссылаться на некоторый XML, который представляет собой список ингредиентов для разных типов автомобилей. Например. (и, пожалуйста, игнорируйте формат, это только для иллюстрации):
<ExpensiveCar>
<Name>Expensive Car</Name>
<Parts>
<HeatedSeats/>
<Wheel count=4/>
<RearParkingSensor/>
<ElectricWindow type=FrontAndBack/>
</Parts>
</ExpensiveCar>
Фабрика проанализирует этот список ингредиентов и создаст объект автомобиля. Новые типы автомобилей будут доступны для системы при условии кодирования деталей и написания списка ингредиентов в формате XML.
Вопросы:
- Как называется эта модель? Или это просто несколько паттернов?
- Является ли что-нибудь из этого антипаттерном?
- Как мне представить это в UML? Я мог бы сделать диаграмму классов для частей и для базового класса автомобиля. Как бы я показал экземпляры этого класса, которые в настоящее время поддерживаются, и части, которые у них есть?
Спасибо заранее. Если что-то из этого неясно, пожалуйста, прокомментируйте, и я внесу изменения в / udpate / и предоставлю более подробную информацию.