Замена однонаправленной связи двунаправленной.
У вас есть два класса, которым нужно использовать фичи друг друга, но между ними существует только односторонняя связь.
Добавьте недостающую связь в класс, в котором она отсутствует.
##Example


##Why Refactor
Между классами изначально была одностороння связь. Однако с течением времени клиентскому коду потребовался доступ в обе стороны этой связи.
##Benefits
- Если в классе возникает необходимость в обратной связи, её можно попросту вычислить. Однако, если такие вычисления оказываются довольно сложными, лучше хранить обратную связь.
##How to Refactor
-
Добавьте поле, которое будет содержать обратную связь.
-
Решите, какой класс будет «управляющим». Этот класс должен содержать методы, которые создают или обновляют связь при добавлении или изменении элементов, устанавливая связь в своём классе, а также вызывая служебные методы установки связи в связываемом объекте.
-
Создайте служебный метод установки связи в «не управляющем классе». Этот метод должен заполнять поле со связью тем, что ему подают в параметрах. Назовите этот метод так, чтобы было очевидно, что его не стоит использовать в других целях.
-
Если старые методы управления однонаправленной связью находились в «управляющем классе», дополните их вызовами служебных методов из связываемого объекта.
-
Если старые методы управления связью находились в «не управляющем классе», создайте управляющие методы в «управляющем классе», вызывайте их и делегируйте им выполнение.