Это своего рода общий вопрос, позвольте мне сформулировать его в конкретном сценарии. Я кодирую систему ценообразования. В одной руке есть несколько «двигателей», с другой - несколько «инструментов». Я создал иерархии классов для них обоих.Двухсторонний дизайн-схема ООП
Проблема в том, что я хочу реализовать механизм ценообразования. Учитывая конкретный движок И конкретный инструмент, вместе они определяют алгоритм для расчета цены. Было бы неплохо закодировать его в таблице из двух записей. Оба экземпляра содержат важную информацию, ни одна из них не кажется более важной, чем другая. В методах ООП относятся к одному классу, поэтому я не вижу приличного дизайна для решения этой проблемы: метод ценообразования должен быть в классе «Инструменты» или «Двигатели»?
Как бы то ни было, у меня такая же проблема. Предположим, я решил, что это должно быть в двигателях. Затем, внутри методов ценообразования я должен иметь инструкцию «if-then-else», касающуюся каждого возможного инструментария? Это кажется слишком уродливая (и тесная связь!), Особенно, если я буду иметь, чтобы проверить его с чем-то вроде
isinstance(inst, InstrClass1)
Я могу себе представить, возникают подобные ситуации во многих контекстах. Каков наилучший дизайн-шаблон для решения этих проблем?
перефразировать как пример транспортного средства + Circuit
что у вас есть, с одной стороны, иерархия классов транспортных средств. Есть мотоциклы, автомобили и т. Д. Конкретный объект может быть Yahama Ray, это пример мотоцикла, а также автомобиля.
С другой стороны, у вас есть цепи. И классы LeMans, Jerez, LagunaSeca и т. Д.
Мы хотим, чтобы имитировать характеристики данного автомобиля в данной схеме. Например, предположим, что выход - это время, необходимое транспортному средству для завершения одного круга. Для мотоциклов и автомобилей физика отличается, , поэтому у вас есть разные алгоритмы. Но также предположим, что в некоторых схемах вам необходимо учитывать некоторые факторы , которые в других не имеют значения. Итак, только когда вы знаете все детали автомобиля и схемы, вы можете имитировать. Вы не можете просить схему «имитировать себя» и получить время, а затем попросить также «имитировать себя» и дать вам в другой раз и, наконец, подготовить окончательный ответ с этими двумя.
Надеюсь, это проливает свет на то, что я пытаюсь сделать.
Если речь идет о комбинациях, это должно быть в чем-то, что представляет собой комбинацию. – PeeHaa