Допустим, у вас есть FooManager
для управления несколькими объектами типа Foo
. FooManager
необходимо увидеть некоторые части своих Foo
, чтобы оценить их текущее состояние. Прежде чем я использовал несколько методов доступа в Foo
, чтобы увидеть эти части, пока я не понял, что FooManager
— единственный класс, который фактически их использует. Я решил сделать FooManager
другом Foo
. Это привело к тому, что большая часть класса Foo
стала частной.
Уместно ли это использование слова «друг»? Я полагал, что это помогает инкапсуляции, потому что, предоставляя FooManager
полный доступ к Foo
внутренностям, он полностью блокирует доступ ко всему остальному.