私は高度なモジュラーGUIシステムを開発中です。私はそれができるだけ柔軟になるように、そしてできるだけ多くの人に有益に役立つように(しかし、それは合理的にニッチになる)必要があります。GUI - コールセッターまたはディスパッチイベント?
私が考えることを引き起こしている私のデザインの一部は、各コンポーネントが最良のアプリケーションの残りの部分と対話する方法です。コンポーネントが作用すべきでセッターのクラスと名前に
- パス:
は、私は2つのアプローチを参照してください。これにより、必要に応じてセッター内からイベントをディスパッチすることができます。
- コンポーネントは関連データで、ディスパッチべきCustomEvent渡します。私はこれがイベントリスナーをたくさん招き、余分な複雑さを感じるかもしれません。
しかし、ベストプラクティスは何ですか?それぞれの長所と短所は何ですか?より良い方法はありますか?
Basicの例:
public class Button extends Sprite { private var _property:String; private var _object:*; public function Button(label:String, object:*, property:String) { _property = property; _object = object; addEventListener(MouseEvent.CLICK, onClick); } private function onClick(e:MouseEvent):void { _object[_property] = "Changed"; } }
基本例:
public class Button extends Sprite { private var _event:GuiEvent; public function Button(label:String, event:GuiEvent) { _event = event; addEventListener(MouseEvent.CLICK, onClick); } private function onClick(e:MouseEvent):void { dispatchEvent(new GuiEvent(_event.type, "Changed")); } }
エディタ(リスト、入力フィールド、そのような要素など)とボタンのイベントまたはメソッドクロージャにオプション1(バインディング)を使用します。私は、DataBindingのための少しの最小限のコンパイルを再構築しています。http://turbosqel.pl/mix/で確認できます。イベントは良いですが、もっとコードを必要とし、何かを変更するのが難しくなります。 – turbosqel
ええ、いくつかのGUIフレームワークがそのようなシステムを使用しているのがわかります – davivid