私は高度なモジュラー GUI システムを開発中です。できるだけ柔軟で、できればできるだけ多くの人に役立つようにする必要があります(ただし、かなりニッチになります)。
私が考えさせられている私の設計の部分は、各コンポーネントがアプリケーションの残りの部分とどのように相互作用するのが最善かということです。
私は2つのアプローチを見ています:
- コンポーネントが動作するセッターのクラスと名前を渡します。これにより、必要に応じてセッター内からイベントをディスパッチできます。
- コンポーネントがディスパッチする CustomEvent を関連データとともに渡します。これにより、多くのイベントリスナーが発生し、複雑さが増す可能性があると思います。
しかし、ベストプラクティスとは何ですか? それぞれの長所と短所は何ですか?より良い方法はありますか?
基本的な例:
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")); } }