У меня наивный вопрос о шаблонах проектирования ООП.Это чрезмерная архитектура, но мне нужна рекомендация, а не суждение.Предположим, у вас есть иерархия классов, продиктованная «бизнес-требованиями».Итак, у вас есть более глубокая версия Pizza : Freight
, Flowers : Freight
и TonOfBricks : Freight
, и у вас есть IDispatchService<F> where F : Freight
и IDeliveryService<F> where F : Freight
.
Теперь предположим, что разные IDeliveryService
Реализации хотят разную информацию о грузе.То, что они хотят , не соответствует вашей иерархии классов , и вы понятия не имеете, какую службу доставки (т.е. API) вы собираетесь использовать через месяц для какой посылки.Кроме того, у вас может быть достаточно информации, чтобы отправить одну пиццу через вакуумную трубку, но, возможно, не следующую.
Теперь вы поняли, что вы также можете нанять людей для доставки вашей пиццы на роликах, но вам нужноукажите центр массы каждого предмета, доставленного таким образом, иначе страховка вас убьет.Вы реализуете это как IDeliveryService<Pizza>
?Вы также добавляете новый интерфейс IHasCenterOfMass
и, возможно, реализуете его как IDeliveryService<IHasCenterOfMass>
?Если так, то как диспетчеру это понравится?Вы добавляете отношение к вашей базе данных для центра масс?