Вариант 1 будет более уместным, если вы будете вести себя по-разному для каждого поставщика, в этом случае кажется, что переход к варианту 2 является лучшим выбором, поскольку он проще.
Что я обычно делаю, когда не знаю, как что-то решить:
- Перечислите мои требования: Получите лучшую цену за предмет из набора поставщиков.
- Создайте список объектов-кандидатов: Поставщик, Товар, Ритейлеры и т.д.
- Рисование или разметка классов с отношениями, которые, я думаю, имеют смысл
- Когда я потерян, я начинаю кодировать основные классы для требования, в этом случае это будет метод Retailers и GetBestRetailer ().
для любого из вышеперечисленного не имеет значения, ошибаетесь вы или нет, это своего рода мозговой штурм, чтобы лучше понять, чего вы должны достичь и какие варианты вы найдете для этого.
Каждый раз, когда вы сталкиваетесь с чем-то, что кажется трудным, я абстрагируюсь от этого, либо создав метод, который возвращает вам нужный вам ответ, либо создав новый класс, если это кажется более целесообразным.
В качестве упражнения я стараюсь думать, что «сложные / сложные» части будут кодироваться кем-то другим, и, делегируя методу или классу, я отделяю это от части проблемы, на которой я сейчас сосредоточен.
НТН