2010-01-05 5 views

답변

3

정말 당신이 성취하고자하는 대상에 따라 다릅니다. 필요한 경우 한 모델이 다른 모델과 상호 작용할 수 있습니다. 모델이 다른 모델과 상호 작용해야하는 이유는 충분히 고려해야하며, 모델 상호 작용이 모델 간 의사 소통 상호 작용에 더 잘 도움이되지는 않을 것입니다.

+1

"모델과 의사 소통 상호 작용이 더 잘 이루어졌습니다"이것은 무엇을 의미합니까? 덕분에 ... 여전히 새로운이 – johnnietheblack

+1

아마도 그는 서로 직접 대화하는 모델은 서로 직접적인 관계가 있어야 함을 의미합니다. 한 모델이 다른 모델의 구성 요소와 같습니다. 완전히 무관 한 모델은 컨트롤러와 같은 매개체를 사용하는 것이 가장 좋습니다. –

+0

@ julson ... 그래서 User 클래스와 대화하는 Authentication 클래스의 예제에서 ... 그 철학에 정말로 맞지 않습니까? – johnnietheblack

3

상호 작용하는 서로 다른 모델 클래스는 문제가 없습니다. 대부분의 복잡한 객체는 완전히 독립형이 아닙니다. 좋은 OO 코드와 마찬가지로 클래스는 공용 메소드를 사용해야하며 구현을 서로 공개하지는 않지만 그 이상의 것은 모두 좋습니다.

+0

"구현을 노출 함"이란 무엇을 의미합니까? 감사! – johnnietheblack

+0

@ johnnietheblack : ClassA가 ClassB를 호출하면 ClassA는 ClassB가 수행해야하는 작업을 알고 있어야하지만 정확히 수행하지는 않습니다. 예를 들어, 누군가가 Hashtable에서 HashMap 또는 TreeMap으로 ClassB의 내부 변수를 수정 한 경우 ClassA에 전혀 영향을 미치지 않아야합니다. 실용적인 측면에서 볼 때, 이는 보호 된 속성이나 공개 속성에 직접 액세스하는 대신 공용 getter 및 setter를 개인 속성에 사용하는 것을 의미합니다. ClassB는 속성의 변경을 제어 할 수 있어야합니다. –

2

그들은 서로에 대해 확실히 알고 서로의 기능을 활용할 수 있습니다. 흔히 모범 사례는 이러한 단방향을 유지하지만 항상 그런 것은 아닙니다. dj_segfault와 마찬가지로이 상호 작용은 public 메소드를 통해 이루어져야합니다. Dependency injection; 모든 공용 메소드가 여전히 동일하게 작동하는 한, 한 클래스의 내부 작동을 변경하면 다른 클래스를 손상시키지 않아야합니다.

관련 문제