0

Java 프로젝트에서 디자인 문제가 있습니다. 우리 실험실에서 현미경을 제어하는 ​​여러 개의 패널이있는 MainWindow 프레임이 있습니다. 각 패널에는 특정 작업을 실행하기위한 텍스트 필드, 버튼 등이 있습니다.서로 의존해서는 안되는 컨트롤러간에 데이터 전달

MVC 패턴에 따라 프로그램을 설계했습니다. 모든 패널에는 자체 컨트롤러가 있습니다. 이제는 서로 의존하지 않고 컨트롤러간에 데이터를 전달해야하는 디자인 문제에 직면하고 있습니다.

두 가지 예 :

  1. 한 패널은 약 10 분 소요 화상 획득 시리즈를 시작한다. 그 당시에는 다른 모든 패널의 UI 컨트롤을 비활성화하려고 했으므로 사용자는이 시리즈를 중단 할 수 없습니다.

  2. 이 시리즈가 끝나면이 수집에 대한 일부 메타 데이터를 다른 패널 (일부 필드를 미리 채우기 위해)에 표시하려고합니다.

내 아이디어 지금까지 :

  • 옵저버 패턴 : 다른 패널의 컨트롤러를 관심을 가질만한 이벤트를 모든 패널 컨트롤러에서 대기하는 관찰자 클래스를 가졌어요. 이것은 컨트롤러의 상속이 Observable 클래스에 고정된다는 단점이 있습니다. 이것은 (아직) 문제가되지 않습니다. 나는 너무 일찍이 결정을 내리고 싶지 않습니다 ... 음 ... 그리고이 관찰자 계급은 아마도 시간이 지남에 따라 커질 것입니다.
  • 알림 패턴 : iOS 백그라운드에서 오는 알림 NSNotifications이 내 마음에 들었습니다. 그러나 Java에는 그러한 것이 없습니다.

그 문제에 대한 귀하의 아이디어는 무엇입니까? 내가 모르는 다른 옵션이 있습니까? 처음에는 디자인이 좋지 않습니까?

당신의 생각을 알려주세요! 미리 감사드립니다

답변

0

Observable을 인터페이스로 만들면 상속 잠금 문제가 발생하지 않습니다. 중재자 패턴을 볼 수도 있습니다. 귀하가 제공 한 설명에 따라 귀하의 필요에 부합합니다.

+0

Observable을 인터페이스로 만들려면 어떻게해야합니까? Observable을 확장하는 클래스는 관찰자와 상호 작용하는 데 필요한 모든 메소드를 상속해야합니다. 나는 중재자 패턴에 대해 들어 본 적이 없으며, 나는 그것을 살펴볼 것입니다! –

+0

물론 추상 클래스 인 java.util.Observable을 사용하는 경우에는 상속을 사용해야하지만 비슷한 역할을 가진 고유 한 인터페이스를 작성할 수 있습니다 (좋은 예는 [http] // 여기에서 찾을 수 있습니다. javarevisited.blogspot.ru/2011/12/observer-design-pattern-java-example.html)). – Gyrotank