2013-06-26 3 views
0

У меня есть проект, в котором пользователь может создавать разные объекты. Это приложение имеет несколько подокнов, и некоторые из них могут изменять один глобальный объект. Существует три способа изменить такой объект:Дизайн отношений классов

  1. Загрузка из объекта базы данных. (window1)
  2. Измените это с помощью окна с формами (кнопки, lineedit ...) (window2)
  3. Измените его с помощью графического окна, в котором отображается этот объект (например, с помощью мыши) . (window3)

Логика следующая: если у меня есть загрузка из нового объекта базы данных, она должна обновлять объект в окне2 и окне3. Если я изменил объект через окно2, тогда объект в окне3 должен быть обновлен, а window1 должен быть уведомлен о том, что объект был изменен. Если я изменил объект через окно3, тогда объект в окне2 должен быть обновлен, а window1 должен быть уведомлен о том, что объект был изменен.

Теперь логика следующая: объект хранится в классе с глобальным доступом (singleton). Оконное уведомление выполняется через механизм сигнального слота в qt.

Есть ли другой способ его проектировать?

ответ

1

Это достаточно хорошо. Но синглтон не очень хорош. Другой способ - сделать одно из окон создателем и владельцем общего объекта и поместить указатель на объект в другие окна. После этого вы можете инициализировать соединения сигнального слота, как обычно.