Я столкнулся с article о правильном способе инкапсуляции. Это действительно привлекло мое внимание и решило часть моей прежней путаницы. Тогда я подумал об этом. Не должно быть никакого свойства или (метода геттера), которые раскрывают какую-либо общую ссылку. Чтобы достичь этого, каждое внутреннее поле должно быть построено свеже. Но не всегда возможно знать конструктивную логику или даже найти подходящий конструктор. Поэтому я подумал, что для этой цели можно использовать глубокое клонирование.Глубокое клонирование для достижения правильной инкапсуляции
Есть несколько способов добиться глубокого клонирования (one way, some other ways).
Мои вопросы:
1- ли мой подход имеет смысл, или это полностью нонсенс?
2- Являются ли операции глубокого клонирования опасными или неопределенными? Если да, правильно ли было бы использовать такое динамическое (или неопределенное) поведение для такого основного модуля (на основе бизнес-моделей getters)?
PS: Даже если Java используется в статье, я задаю вопросы для .NET или C#. Я не уверен, но у Java могут быть разные возможности глубокого клонирования. Я не чувствую себя комфортно с Java.
спасибо. Вы правы, что эту концепцию нельзя использовать, как серебряную пулю. Но я понял, что это имеет значение. Из-за этой проблемы я несколько раз застрял. Я описал его как «ссылочное отравление», но я не смог его правильно решить. –