문제

현재 프로젝트의 경우 기본적으로 3 개의 주요 Java 클래스가 있습니다.

  1. 구이
  2. 인스턴트 메시징
  3. 계산

기본적으로 전체 의사 소통이 필요하므로 GUI가 전체 프로젝트를 실행하는 것보다는 중재자 접근 방식을 사용하기로 결정했습니다.

기본적으로 중재자는 통신을 캡슐화 할 것입니다. 우리가 실행 한 문제는 GUI 구성 요소가 중재자가 언제라도 전화를 걸 수있는 수많은 방법을 구축하지 않고 업데이트하는 방법입니다.

전. GUI가 사용자를 로그인하고 중재자를 통해 스레드를 생성하고 로그인하지만 중재자는 성공/실패를 GUI로 다시 전달하고 상태 메시지를 업데이트해야한다고 가정합니다.

다른 문제는 GUI를 업데이트해야하지만 중재자가 필요하지 않은 것들입니다. GUI가 해당 클래스의 인스턴스를 만들고 실행하는 것이 실용적입니까? 아니면 모든 것이 중재자를 통과해야합니까?

우리의 독창적 인 디자인은 GUI가 모든 것을 관리했지만 실제로 재사용 가능성을 죽였습니다. 이 경우 더 나은 설계 방법이 있습니까?

도움이 되었습니까?

해결책

너무 많은 오버 헤드를 가져 오기 위해 관찰자를 찾는 경우 중재자가 가장 좋은 방법 일 수 있습니다. 나는 당신이 GUI가 쇼를 실행해서는 안된다고 생각합니다. 중재자 패턴을 사용하려면 중재자 자체가 담당해야합니다. 당신이 고려할 수있는 것은 명령 패턴의 변형입니다. 루비를 사용하는 경우 중재자가 GUI에 연락하는 것을 피하는 수단으로 기능 콜백을 통과하는 것이 좋습니다. 그러나 Java이기 때문에 명령 패턴 스타일의 동작을 캡슐화하는 것이 도움이 될 수 있습니다.

다른 팁

중재자가 콜백/알림을 트리거하고 싶지 않은 경우 로그인 기능에 콜백을 주입하여 로그인이 완료되면 호출을 할 수 있습니다.

그래도 Java에서 콜백을 주입하는 방법을 모르겠습니다. 기능이 일등석 시민 인 언어에서는 기능을 통과 할 수 있지만 Java에 있으므로 Kmorris가 제안한대로 명령 패턴을 사용해야한다고 생각합니다.

또한 GUI가 중재자에게 콜백 객체에 반환 값을 검색하거나 필요한 값 (명령 패턴의 버전)을 처리하는 콜백 객체를 제공 할 수도 있습니다. 그런 다음 GUI에서 중재자로 전화 당 하나가 있습니다.

또 다른 생각은 중재자가 의미 적으로 관련된 덩어리로 호출하는 방법을 그룹화하는 것입니다. 특히 중재자에 여러 GUI 방법을 연속으로 호출하는 경향이있는 경우 :

   gui.a()
   gui.b()
   gui.c()

세 가지를 모두 호출 한 결과를 처리하는 단일 메소드를 만들 수 있습니다. 의미 적으로 그룹화 된 방법의 장점 (즉 setFileInformation ~ 위에 setFileMenu, setTab, 또한 GUI를 변경 해야하는 경우 메소드의 내용이 변경 될 수 있지만 중재자가하는 전화는 그렇지 않을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top