Скажите не спрашивайте - как это относится к этому примеру?
В качестве прокси для чего-то реального, над чем я работаю, подумайте о создании модели. У нас будет Parts
класс, представляющий детали модели, в комплекте с методами для изготовления детали на основе заданных параметров, для проверки и т. д. У нас есть Glue
класс, который делает то же самое, и ModelBuilder
учебный класс.
Я могу изготовить свой клей и детали с хорошей герметизацией. Тогда я передаю PartsInstance
и мой GlueInstance
к моему ModelBuilder
в качестве параметров. Здесь все разваливается. Я могу сказать моему ModelBuilder собрать, но для этого ему нужен доступ к данным в Parts
(а может и Glue
). Мне, например, нужно знать, где находится угол или центр PartsInstance.Part[0]
для того, чтобы правильно построить.
Я нахожусь в затруднительном положении, потому что кажется, что лагерь "Скажи, не спрашивай" сказал бы, что деталь должна каким-то образом создать себя. Но это не имеет смысла для меня. Часть есть часть, а не вся модель. Вот что надо строить самому. ModelBuilder
может быть довольно сложным, и возможно, что Parts
может быть использован где-то еще. С другой стороны, я спрашиваю о состоянии PartsInstance
объект, а затем принимать решение на основе этого состояния. Кроме того, решение не может быть чем-то, что подходит только внутри Parts
Концепция в любом случае. Это может включать в себя тип Glue
Я выбрал.
Как я могу построить или переработать этот пример, чтобы он не нарушал инкапсуляцию?