시나리오 :의존성을 제거하는 기술?
이벤트은 이벤트로부터 전달되는
데이터 (현재 대리자를 통해) 클래스 B.에서 방법 의해 처리 될 필요가 클래스 A에 상승 방법 현재 클래스 C.에 싸여
이것은 분명히 난 다시하기 위해 수행 할 수있는 임의의 기술/리팩토링 있는가 클래스 C.
에 의존하는 클래스 B를 필요 이걸로 바꿔 줘?
예 : 데이터를 단순한 원시 데이터 유형으로 다시 풀어서 직접 전달합니다.
시나리오 :의존성을 제거하는 기술?
이벤트은 이벤트로부터 전달되는
데이터 (현재 대리자를 통해) 클래스 B.에서 방법 의해 처리 될 필요가 클래스 A에 상승 방법 현재 클래스 C.에 싸여
이것은 분명히 난 다시하기 위해 수행 할 수있는 임의의 기술/리팩토링 있는가 클래스 C.
에 의존하는 클래스 B를 필요 이걸로 바꿔 줘?
예 : 데이터를 단순한 원시 데이터 유형으로 다시 풀어서 직접 전달합니다.
(직렬화 복원하지 않고) XPATH를 통해 직접 XML을 읽어보다,하지만 당신은 정말이 종속성을 제거 할 않는 것을 확신 할 수있다. 클래스 A와 클래스 B가 C 사이에 다리가 있거나 C가 그 둘 사이를 연결하는 경우 C에 의존한다는 것은 완전히 유효합니다.
프리미티브에 언로드하면 컴파일 종속성이 제거되지만 데이터 종속성은 제거되지 않습니다. 논리적으로 필요한 개체 (클래스 C)를 제거하여 실제로 디자인을 "비정규 화"할 수도 있습니다.
당신은 XML로 직렬화하고, 일하는 것이 기본 요소로 줄이기
나는 Steven Lowe와 동의합니다. 종속성이 유효합니다. 내가 제공 할 수있는 유일한 대안은 실제 클래스 대신 인터페이스에 의존하는 것인데, 똑같은 것으로 귀결됩니다.
대부분의 사람들이 말했듯이 C에 대한 의존성은 아마도 유효 할 것입니다.
그러나 C에 따라 문제가 발생하는 경우 C가 너무 복잡하거나 너무 많은 종속성이있을 수 있습니다.
클래스 C가 이벤트에 전달되면 해당 클래스의 종속성이없는 POCO 클래스 여야하므로 리팩토링을 고려할 수 있습니다.
C가 자신의 방법을 복잡한 경우, 당신이 적어도 이러한 종속성을 중앙 집중화하고 구성 할 수 있도록 Structuremap 같은 의존성 삽입 프레임 워크 봤어
실제로 클래스 A에 속하는 좋은 내기인가? 이벤트/델리게이트 형식으로 시도하지는 않았지만 레이어 주위에 많은 사용자 지정 형식/인터페이스를 전달하는 경우에는 훌륭한 도구입니다.
실제 구현 대신 인터페이스에 따라 항상 코드를 작성하여 전반적인 유연성과 테스트 가능성을 향상시킵니다. – Tigraine