2013-06-26 5 views
0

사용자가 다른 프로젝트를 만들 수있는 프로젝트가 있습니다. 이 응용 프로그램에는 몇 개의 하위 창이 있으며 그 중 일부는 하나의 전역 객체를 수정할 수 있습니다. 이러한 개체를 수정하는 세 가지 방법이 있습니다.클래스 관계 디자인

  1. 데이터베이스 개체에서로드. (창 1)
  2. 양식 (단추, 줄 바꿈 등)이있는 창을 사용하여 수정하십시오 (창 2)
  3. 이 개체가 표시된 (예 : 마우스로) 그래픽 창의 도움말을 사용하여 수정하십시오. . (window3)

논리는 다음과 같습니다. 데이터베이스에서 새 객체를로드하면 window2 및 window3의 객체를 업데이트해야합니다. window2를 통해 객체를 변경 한 경우 window3의 객체를 업데이트해야하며 window1에 객체가 변경되었다는 사실을 알려야합니다. window3을 통해 객체를 변경 한 경우 window2의 객체를 업데이트해야하며 window1에 객체가 변경되었다는 사실을 알려야합니다.

이제 논리는 다음과 같습니다. 객체는 전역 액세스 (싱글 톤)가있는 클래스에 저장됩니다. 윈도우 알림은 qt의 신호 슬롯 메커니즘을 통해 수행됩니다.

다른 방법으로 디자인 할 수 있습니까?

답변

1

충분합니다. 그러나 싱글 톤은 그렇게 좋은 패턴이 아닙니다. 다른 방법은 윈도우 중 하나를 공유 객체의 생성자와 소유자로 만들고 객체에 대한 포인터를 다른 윈도우에 놓는 것입니다. 그런 다음 평소대로 신호 슬롯 연결을 초기화 할 수 있습니다.