접착제 또는 관리 클래스는 언제 너무 많은 일을합니까?


10

내 디자인의 다른 클래스를 관리하는 중앙 집중식 클래스를 작성하는 경향이 있습니다. 모든 것을 저장하지는 않지만 대부분의 데이터 요청은 먼저 "관리자"에게 전달됩니다. 이 질문 에 대한 답을 보면서 나는 "신의 대상"이라는 용어를 발견했습니다. Wikipedia는 반 패턴으로 이해합니다.

데이터와 메시지를 다른 곳으로 전달하는 합법적 인 접착제 클래스 또는 모듈과 너무 많은 클래스 사이의 경계는 어디에 있습니까?

답변:


15

많은 사람들이 "수업은 당신의 머리보다 커서는 안된다"고 말합니다.

그러나 저는이 주제에 관해 정말 훌륭한 세계적 수준의 프로그래머들과 토론에 참여했습니다. Naked Objects 녀석들과 이야기를 나 ve습니다. 우리가 알 수있는 한, 때때로, 이런 일이 발생하며, 그 문제를 해결할 방법이 많지 않습니다.

그러나 일반적으로 이런 일이 발생하는 한 클래스는 도메인의 기본 요소 인 은행 계좌, 소매 판매 등을 나타내는 도메인 객체입니다. 다른 클래스에서도 발생하는 경우 그 클래스의 책임을 고려하고 싶습니다. 내 팁은 다음과 같습니다.

  • "관리자", "도움말"또는 "서비스"라고하면 기회가 너무 큽니다. 일단 수업의 책임이 무엇인지 알아 내면 다른 책임을 위임하는 것이 더 쉽다는 것을 알게 될 것입니다.
  • 그것이 "컨트롤러"라고 불린다면, 다른 많은 클래스들 사이의 상호 작용을 제어 할 책임이 있습니다.
  • 이 서로 다른 물리 노드 간 데이터와 메시지를 전달하는 것 경우 중 하나 가 직렬화 된 양식에 특정 메시지를 변환 처리한다, 또는 그것은 전송 메커니즘을 처리합니다. 예를 들어, Bank Transaction을 XML로 변환하는 클래스와 HTTP를 통해 해당 XML을 전송하는 클래스가있을 수 있습니다.
  • 응용 프로그램의 다른 모듈간에 이벤트를 전달하는 경우 이벤트가 발생하면 리스너에게 알리고 다른 것은 없습니다.

경험 상으로는 너무 크면 다른 수업에 책임을 위임 할 수 있는지, 그렇지 않은 경우에는 괜찮을 것입니다.


유용한 구체적인 지침이있는 정답입니다. 모든 또는 거의 모든 데이터가 도메인의 일부 측면을 나타내는 도메인 객체에 대해 이와 같은 클래스를 만드는 경향이 있으며이를 단위로 취급 할 수 있기를 원합니다. 그런 다음 실제 책임을 큰 클래스 안에서만 인스턴스화되는 클래스에 위임하는 경향이 있습니다. 그래서 나는 거의 라인에 가깝고, 나는 그것을 작성할 때 개별 클래스를 작게 만드는 것에 기대어야합니다.
jprete
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.