두 클래스 간의 "친구" 종속성을 제거하는 시나리오가 발생할 수 있습니다. 특히 과도한 상호 의존성, 유지 관리 문제 및 오래된 UML 표준에 대한 우려로 인해 더욱 그렇습니다.
"friend" 클래스에 의해 노출된 메서드를 추출하고 새로운 추상 인터페이스를 만듭니다. "friend" 클래스에서 인터페이스로 종속 관계를 설정하고 다른 클래스에서 인터페이스로 "호출" 종속성을 설정합니다.
작업 이동 종속 클래스에서 추상 인터페이스로의 "호출" 종속성을 구성합니다. 상속을 위해 인터페이스가 보호된 생성자를 확장하도록 만들고 종속 클래스와 인터페이스 간의 보호된 일반화 연관을 숨깁니다.
마지막 단계에서 메서드를 만듭니다. "friend" 클래스에서 추상 인터페이스의 참조를 종속 클래스에 전달합니다. 필요한 연결을 설정하려면 초기화 중에 종속 클래스에서 이 메서드를 호출하세요.
ClassA (공급자):
class ClassA : protected InternalInterface {
public:
attachAccessor(ClassAAccessor &accessor) {
accessor.setInternalInterfaceRef(*this);
}
};
ClassAAccessor (친구):
class ClassAAccessor {
public:
ClassAAccessor(ClassA& classA) : internalInterfaceRef(0) {
classA.attachAccessor(*this);
}
private:
InternalInterface* internalInterfaceRef;
};
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3