2009-10-23 3 views
3

좋아요, 이상한 질문 일 수도 있고 잘못된 방향으로 가고있을 수도 있습니다. 그러나 여기에 내 문제가 있습니다 :컬렉션 항목은 컬렉션에 대해 알고 있습니다.이 냄새가 있습니까?

나는 Tag 객체들의 집합을 가지고있는 SearchForm 객체를 가지고 있습니다. 사용자가 Tag 객체를 클릭하면 해당 객체가 강조 표시되고 이벤트가 트리거됩니다. SearchForm 클래스는이 이벤트를 수신하여 자신을 제출합니다. Tag 객체는 SearchForm과 아무 관련이 없습니다.

지금까지 그렇게 좋았습니다.

이제 일부 태그는 클릭 할 때 다른 태그를 활성화해야합니다. 각 태그는 활성화해야하는 다른 태그를 알고 있습니다. 하지만 이렇게하기 위해서는 searchform이 보유한 전체 태그 모음에 대해 알아야합니다.

태그 인스턴스 (= 컬렉션 항목)에 다른 모든 태그 (= 컬렉션)의 전체 목록에 대한 참조가있는 경우 "좋지 않습니까?

물론이 같은 일부 뭔가 행할 것 :

Tag is clicked -> SearchForm is notified -> checks if the clicked tag must activate some others -> SearchForm activates the needed Tags itself.

하지만 조금 이상하게 보일까요? 아닙니다.

+0

태그 사이에 다 대 다 관계가 있습니다. 특정 hierachy? –

+0

관계가 단방향 일 때 : 태그는 SearchForm에 대한 참조를 보유하지 않지만 SearchForm은 태그에 대한 참조를 보유합니다. – Max

+0

SORRY : 나는 당신의 코멘트를 완전히 읽지 못했습니다. 글쎄, 태그 사이의 관계는 있지만 데이터베이스에 반영되지 않습니다. 나도 알아, 나쁘다. ;) – Max

답변

4

아무 문제가없는 것 같지 않습니다. 컬렉션의 다른 항목에 대해 알아야하는 항목이 컬렉션에있는 경우 해당 컬렉션에 대해 전체적으로 알면 매우 합리적입니다.

대부분의 GUI 프레임 워크와 함께 작업하는 것으로 추정되는 DOM 자체에는 컬렉션에 대해 알고있는 컬렉션 항목이 있습니다 (DOM에서는 요소에 관계없이 parentElement을 호출하여 부모를 가져올 수 있음) .

일반적으로 개체가 커플 링을 줄이기 위해 필요한 최소량 이상을 "알지 못하는"경우 유용합니다. 그러나 객체가 무언가를 알아야 할 필요가 없다면 그것에 대한 참조를 제공하는 것이 무리가 아닙니다.

0

나는 단지 observer design pattern이라고 생각합니다.

저는 자바 스크립트를 모르지만 그것은 할 수 있어야한다고 생각합니다.

귀하의 목록을 하드 코딩하지 마십시오.

1

컬렉션의 항목이 어디에 있는지를 아는 것이 일반적입니다. 링크 된 목록이나 나무를 생각해보십시오. 태그에 전체 목록을 알리지 않으려면 관련 태그에만 참조를 추가하십시오.

관련 문제