我对事件驱动编程和使用MVC还很陌生,所以如果这个问题看起来没有问题,请原谅我。
我正在尝试为我的单例模型类(Client)赋值。我有两个选择:
-
我可以使用模型类构造函数为自己赋值,如下所示:
类客户端{
public var name; public var email; public function Client(arg_name, arg_email){ this.name = arg_name; this.email = arg_email; } }
-
我可以使用控制器为我分配我的值,如下所示:
Class Controller{ public var client:Client = new Client(); public function assign(){ client.name = "booo"; client.email = "blaaah@email.com"; }
}
以下哪一个是更好的解决方案?:)我之所以如此困惑,是因为我见过一些例子,它们只是将值传递给模型类并执行#1(并设置新变量,如[var fullname=fname+lname]),但我知道给模型赋值是控制器的工作
更好是相对的。
第二个例子是通常所说的"属性注入"。
基本上,第一个选项是更快、更小、代码更少。
第二种选择更具可读性和灵活性。
不管控制器是什么,注入都有好处,可以为每个属性创建getter和setter。
因此,基本上,只要您更改"name"属性的值,就可以发生一些事情,例如调度事件。
flex源代码中充满了这个概念。例如,每当您更改组的宽度时,它不仅会更改值,还会执行检查,然后将组设置为脏组,以便其他东西可以对此做出反应。
基本上,它让一切都做自己的事情变得简单,而且它更面向对象。
所有这些并不意味着它实际上更好,但现在以第二种选项样式编写代码更为常见。
希望能有所帮助。