2011-11-18 4 views
0

채팅 응용 프로그램을 만들고 있습니다. 업데이트 내 문제는 여기에 거짓말 : 나는 구성 요소의 인스턴스를 저장하는 핵심 클래스가 있습니다.채팅 응용 프로그램 디자인 패턴

새 메시지를 받으면 Core는 Component 메서드를 호출하고 화면을 업데이트합니다.

구성 요소 패널에 새 메시지를 보내야 만 구성 요소가 코어에 어떻게 알릴 수 있습니까?

구성 요소가 Observer 패턴에서 업데이트를 보내려면 Core 인스턴스가 있어야한다는 것은 나에게 맞지 않습니다. 그것은 간단한 해결책 일지 모르지만 나는 지금 그것을 이해할 수 없다. 어떤 제안이라도 환영한다. 그것은 내가 필요로하는 양방향 관측자 패턴과 같은 것입니다.

+1

코어 및 구성 요소 모두에서 빌드 Java 관찰자 패턴을 구현하는 것이 유효한 해결책일까요? – Giannis

답변

1

기본적으로 관찰자 패턴은 데이터 소스와 수신기가 있고 이들 사이의 느슨한 결합을 보장하려는 경우 항상 사용하기 편리합니다.

Core 클래스가 컴포넌트의 인스턴스를 직접 저장하는 경우 Core 클래스가 컴포넌트의 메소드를 직접 호출 할 수 있으므로 추가 관찰자 패턴이 필요하지 않습니다.

따라서 메시지를 보내기 위해 Core와 구성 요소간에 연결/간접 연결이 필요하며 Observer를 사용해야합니다. 인스턴스를 만들 때 자신을 Observer로 구성 요소에 전달할 수 있습니다.

그러나 실제로, 나는 그것이 아키텍처의 주요 설계 문제, 당신은 이러한 응용 프로그램에 대한 MVC를 사용한다고 생각 :

이 경우

MVC

, 당신이 컨트롤러에서 코어를 분할해야합니다 (UI 상호 작용, 즉 메시지 송수신 처리) 및 모델 (메시지 및 메타 데이터 저장, 응용 프로그램 논리). Component가 View 클래스가됩니다.

+0

기본적으로 구성 요소는 런타임 중에 변경 될 수있는 추상 클래스이지만 예를 들어 구성 요소에 메시지를 보내려면 Observer가 실제로 필요하지 않다는 질문을 게시 한 후에 나타났습니다. 구성 요소에서 핵심으로 데이터를 전송해야 했습니까? 그 패턴을 잘못 지적 해 주셔서 감사합니다. – Giannis

+0

예, 주기적 종속성을 피하기 위해 느슨한 결합을 사용하여 구성 요소에서 코어로 데이터를 전송할 수 있습니다. MVC는 Observer와 비슷한 방식으로이 문제를 해결합니다. View에서 Controller로, Model에서 View로 Observer 패턴이 있습니다 (항상 ofc는 기본 기술에 따라 다릅니다) – philomatic