2008-11-03 3 views
2

시나리오 :의존성을 제거하는 기술?

이벤트이벤트로부터 전달되는

데이터 (현재 대리자를 통해) 클래스 B.에서 방법 의해 처리 될 필요가 클래스 A에 상승 방법 현재 클래스 C.에 싸여
이것은 분명히 난 다시하기 위해 수행 할 수있는 임의의 기술/리팩토링 있는가 클래스 C.

에 의존하는 클래스 B를 필요 이걸로 바꿔 줘?
예 : 데이터를 단순한 원시 데이터 유형으로 다시 풀어서 직접 전달합니다.

답변

5

(직렬화 복원하지 않고) XPATH를 통해 직접 XML을 읽어보다,하지만 당신은 정말이 종속성을 제거 할 않는 것을 확신 할 수있다. 클래스 A와 클래스 B가 C 사이에 다리가 있거나 C가 그 둘 사이를 연결하는 경우 C에 의존한다는 것은 완전히 유효합니다.

프리미티브에 언로드하면 컴파일 종속성이 제거되지만 데이터 종속성은 제거되지 않습니다. 논리적으로 필요한 개체 (클래스 C)를 제거하여 실제로 디자인을 "비정규 화"할 수도 있습니다.

-2

당신은 XML로 직렬화하고, 일하는 것이 기본 요소로 줄이기

2

나는 Steven Lowe와 동의합니다. 종속성이 유효합니다. 내가 제공 할 수있는 유일한 대안은 실제 클래스 대신 인터페이스에 의존하는 것인데, 똑같은 것으로 귀결됩니다.

+0

실제 구현 대신 인터페이스에 따라 항상 코드를 작성하여 전반적인 유연성과 테스트 가능성을 향상시킵니다. – Tigraine

0

대부분의 사람들이 말했듯이 C에 대한 의존성은 아마도 유효 할 것입니다.

그러나 C에 따라 문제가 발생하는 경우 C가 너무 복잡하거나 너무 많은 종속성이있을 수 있습니다.

클래스 C가 이벤트에 전달되면 해당 클래스의 종속성이없는 POCO 클래스 여야하므로 리팩토링을 고려할 수 있습니다.

C가 자신의 방법을 복잡한 경우, 당신이 적어도 이러한 종속성을 중앙 집중화하고 구성 할 수 있도록 Structuremap 같은 의존성 삽입 프레임 워크 봤어

0

실제로 클래스 A에 속하는 좋은 내기인가? 이벤트/델리게이트 형식으로 시도하지는 않았지만 레이어 주위에 많은 사용자 지정 형식/인터페이스를 전달하는 경우에는 훌륭한 도구입니다.

관련 문제