두 클래스 사이의 "친구" 종속성을 제거하는 시나리오가 발생할 수 있습니다. 특히 과도한 상호 의존성, 유지 관리 문제 및 오래된 UML 표준에 대한 우려로 인해 더욱 그렇습니다.
"friend" 클래스에 의해 노출된 메서드를 추출하고 새로운 추상 인터페이스. "friend" 클래스에서 인터페이스로 종속 관계를 설정하고 다른 클래스에서 인터페이스로 "호출" 종속성을 설정합니다.
작업 이동 종속 클래스에서 추상 인터페이스로의 "호출" 종속성을 구성합니다. 인터페이스가 상속 목적을 위해 보호된 생성자를 확장하도록 만들고 종속 클래스와 인터페이스 간의 보호된 일반화 연관을 숨깁니다.
마지막 단계에서 메서드를 만듭니다. "friend" 클래스에서 추상 인터페이스의 참조를 종속 클래스에 전달합니다. 필요한 연결을 설정하려면 초기화 중에 종속 클래스에서 이 메서드를 호출하세요.
ClassA(공급자):
<code class="cpp">class ClassA : protected InternalInterface { public: attachAccessor(ClassAAccessor &accessor) { accessor.setInternalInterfaceRef(*this); } };</code>
ClassAAccessor(친구):
<code class="cpp">class ClassAAccessor { public: ClassAAccessor(ClassA& classA) : internalInterfaceRef(0) { classA.attachAccessor(*this); } private: InternalInterface* internalInterfaceRef; };</code>
위 내용은 \'Friend\' 종속성 선언을 리팩터링하는 방법: 과도한 상호 종속성을 제거하기 위한 단계별 가이드?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!