Рассмотрим приложение для планирования производства со многими продуктами. У каждого продукта есть список объектов InventoryControl с ключом InventoryControlType. В зависимости от алгоритма, который мы используем для планирования производства, нам необходим доступ к различным типам объектов InventoryControl для данного продукта. Это работает хорошо. Однако сегодня мне нужно было ввести поле в InventoryControl, которое содержит InventoryControlType, поскольку в глубине наших алгоритмов нам нужно было знать InventoryControlType.
Однако мне показалось, что я что-то не так делаю, поскольку похоже, что я повторяю данные.
Этот дизайн вам подходит? Есть идеи по улучшению?
class Product{
Dictionary<InventoryControlType, InventoryControl> InventoryControls;
GetInventoryControl(InventoryControlType type){
return InventoryControls[type];
}
}
class InventoryControl{
InventoryControlType controlType;
float limit;
float cost;
...
CalculateCost(){...}
GetConstraint(){...}
}