2011-04-13 9 views
2

以前はデスクトップアプリケーションを設計していましたが、私はいつも、異なるウィンドウがお互いに通信するためのきれいな方法を構築するのが難しいと感じました。シンプルなデスクトップGUIのアーキテクチャ

例:メインウィンドウの動作を変更する設定/オプションダイアログウィンドウ。

「メイン」(たとえば、一度に1つのウィンドウのインスタンスが1つしか表示されない場所など)を作成するとよいでしょう。シングルトンは良いアイデアですか?とにかく一度に1つしかないはずなので、

これにより、別のウィンドウが通信するのが容易になり、よりクリーンになります。

上記が真であれば、クリーンなインターフェイスのためにFacadeのようなメソッドを他のウィンドウに追加できます。

例: MainWindow.setFont(Font f);

ありがとうございます。

+0

いずれかのウィンドウが他のウィンドウについて知っていますか?すなわち、メインウィンドウの設定ウィンドウを表示するコードを例にしていますか? –

+0

Windowsの通信に役立つSingletonとしてApplicationオブジェクトを使用することを検討しましたか? – 9000

+0

@ 9000。はい、私は持っています。しかし、これはちょっときちんとした、拡張可能なようだった。 –

答えて

3

さまざまなデザインパターンをカバーするMartin FowlerのGUI Architecturesです。たとえば、Observer Synchronizationパターンは、参照先の記事の文脈であなたのために働くかもしれません。

可能であれば、自分で作成したフレームワークが難しい作業になる可能性があるため、よく知られているフレームワークに固執することをお勧めします。

+0

ありがとうございます。私はフレームワーク全体をエンジニアリングしようとしているわけではなく、GUIを整理するための良い方法です... –

0

これはQtが正しいことの1つです。ウィンドウと通信したい場合はシグナルを送信します。ウィンドウはシグナルの受信を処理できますが、送信者はそれが存在するかどうか気にする必要はありません。

+0

OpenCVの質問に答えるのはイライラしませんか?まれにppl upvoteとほとんど決して答えは答えを受け入れるために戻ってくる。 – karlphillip

+0

@karlphillip - openCVの「公式」リストはひどいヤフーグループサイトです - 先進のopencvユーザーのための場所はありません –

関連する問題