2009-07-01 2 views
0

카우보이 코더는 SO 베테랑으로부터 도움을 받아야합니다.단일 책임 원칙 : Reader, Writer 및 Container 클래스에서 참고 문헌 클래스를 분리해야합니까?

파일에서 읽은 참고 문헌을 사용하는 특정 응용 프로그램이 있습니다 (실제로는 다른 파일 일 수 있지만 하나의 파일 만 가정합니다).

필자는 해당 클래스를 복사 할 수 있도록 응용 프로그램과 동일한 방식으로 참고 문헌을 사용해야하는 새 응용 프로그램을 빌드합니다.

얼마 후 % - | 참고 문헌 클래스에서

, 읽기, 쓰기 및 참고 문헌을 유지하는 코드가 ...

문제는 다음이었다. 참고 문헌을 읽을 클래스가 하나 있고 모든 값을 유지하는 컨테이너 클래스가 있었을 때 내 작업은 훨씬 쉬워졌습니다. 나는 서지를 쓰거나 편집하고 싶지 않고 그냥 읽고 값을 유지하고 싶지 않다.

그래서 BibliographyReader, BibliographyWriter 및 Bibliography (Container) 클래스로 참고 문헌 클래스를 분류하는 것이 가장 좋습니다.

피씨 : 누군가 "카우보이 코더", "카우보이 코딩"또는 이와 유사한 태그를 만들 수 있습니까? 이 태그가 정말 그리워요;)

답변

4

리더/라이터/게터 등으로부터 "컨테이너"클래스를 분리하는 방법이 바람직합니다. 인터페이스로 정의되는 것이 좋습니다. "전략 패턴"을 검색하면 더 많은 정보를 얻을 수 있습니다.

간단한 접근 방식은 Bibliography 클래스가 해당 생성자에 IBibliographyReader을 허용 한 다음 클래스에서 해당 인터페이스를 구현하도록하는 것입니다. Bibliography 클래스를 생성 할 때 구체적인 판독기 구현의 인스턴스를 전달합니다. 다음과 같이

+0

나는 IBibliographyReader에 대한 아이디어를 좋아한다 : 나는 텍스트 파일로부터 읽을 클래스를 구현할 수 있고, 하나는 xmlfile에서 읽을 수있다. – Inno

+0

세미 컴플렉스 데이터 저장소로이 작업을 수행합니다. 그것은 모든 것을 단위 테스트하는 것이 훨씬 쉽습니다. –

0

나는 책임을 나눌 것입니다 : -

  • 참고 문헌 : 참고 문헌 관련 데이터를 보유하고 있습니다. 이 데이터는 생성자 또는 설정자를 통해 수신됩니다.
  • BibliographyFileStreamReader : 참고 문헌을 읽을 책임이 있습니다 (파일 스트림이 있음). 서지 인스턴스를 반환합니다.

또한 BibliographyFileStreamWritter를 추가 할 수도 있습니다.