일부 독립 모듈을 표시하는 페이지가있는 MVP로 설계된 Java 응용 프로그램이 있다고 가정 해 보겠습니다. 그 중에서도 우리는 고려해야 할 두 개의 독립적 인 MVP 모듈이 있습니다. 여기에는 언급 된 모듈이 통신 할 수있는 기능이 앱에 있습니다. 모듈은 기능을 위해 헌신 된 인터페이스 (API) A 및 B를 제공합니다. 이 기능에 대한 논리를 처리 할 관리자 (M)도 있습니다. 관리자는 고려 된 기능에 참여해야하는 모듈에 대한 참조를 얻기 위해 페이지를 통해 트래버스 (또는 일부 컨텍스트 사용) 할 수 있습니다. 디자인 패턴 - 이벤트 또는 직접 참조
관리자의 코드의 다음 조각 나는 생각하고 접근 방법 제시
다음 EventBuseventBus.addHandler(Event.CHECK_A_IS_OK, new CheckAIsOkHandler(Event e){
eventBus.fireEvent(Event.DO_SOMETHING_ON_B, e.getValue();
});
eventBus.fireEvent(Event.CHECK_A_IS_OK);
를 통해 비동기 이벤트를 사용
를 사용하여 직접 참조
A a; B b; void findModules(){ a = context.findA(); b = context.findB(); } ... if (a.check()){ b.doSomething(B.getValue()); }
질문은 다음과 같습니다 :
개체 사이의 정기적 인 통신 (조건 확인, 값 반환 등)에 EventBus를 사용해도됩니까? 아니면 실제 이벤트에만 이벤트 패턴을 사용하는 것이 좋습니다 (구독자에게 무언가가 발생했다는 것을 알려주는 것)? 두 번째 접근법을 따르기 위해 느슨한 결합에 반대합니까? 어쩌면 다른 패턴이 더 적합할까요?
직관적으로 두 번째 apprach는 나를 위해 더 깨끗합니다.
감사합니다, fatfredyy. 나는 다소 공식적으로 하나 또는 다른 접근법을 정당화 할 수있는 해답을 찾고있었습니다. – rafalry
소프트웨어 작성이 독창적이고 프로그래머가있는 것처럼 많은 방법으로 무언가를 쓸 수 있기 때문에 어려울 수 있습니다. 정당성은 IDE 사이에서 코드 간 명확한 참조가 표시되지만 관찰자와 이벤트 리스너는 표시되지 않습니다. – fatfredyy