我正在开发一个先进的模块化 GUI 系统。我需要它尽可能灵活,并希望对尽可能多的人有用(但是它将是合理的利基)。
我的设计中让我思考的部分是每个组件应该如何最好地与应用程序的其余部分交互。
我看到两种方法:
- 传入一个 setter 的类和名称,组件应该对其进行操作。如果需要,这仍然允许从 setter 内分派事件。
- 传入组件应调度的 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")); } }