[译]PureMVC QA:Where Should I Declare Notification Name Constants?
在PureMVC中我应该在那声明通知名称常量呢?
Q:我想知道在哪声明通知(Notification)名称的常量,在代理(Proxies)或ApplicationFacade文件中?
还有,如果我把所有的通知常量声明在ApplicationFacade中,这样这个文件就会很大,我想过把声明放在一个独立的文件中,这样可以吗,或还有其他地方可以声明常量吗?
A:
把通知常量声明在具体的Façade(一般为ApplicationFacade)中对需要访问通知常量的类来说不失为一个好地方,尤其对于Command和Notification映射而言,放在ApplicationFacade中是一个合理的地方。当然,如果有太多的常量,放在一个单独的ApplicationConstants文件中也是可以的。但是需要把这个文件放在与ApplicationFacade的同一级目录,这样,当作为一个库的时候就特别方便了。
对于给定的应用,视图层和控制层一起完成特定的用户用例或功能,但Mediators(视图层)和Commands(控制层)相互引用对方的常量这一定不是你想要的,否则,他们与在同一层次就没有区别了。所以,把常量发在ApplicationFacade或ApplicationConstants中就是一个比较自然的地方,让视图曾和控制层之间没有形成依赖关系。
由于应用特定的视图层和控制层总是允许你与特定的模型交互,在模型层(Proxies或ModelConstants)定义通知常量供Commands(控制层)和Mediators(视图层)访问是一个好办法,他允许与Proxies直接交互。
无论怎样,模型应该是最为独立的一层,以便可以整体移到其他应用中,被不同的视图或控制层使用。
因此,模型层(Proxies)不应该引用特定的视图或控制器中的常量,比如ApplicationFacade或ApplicationConstants。
你应该在模型中定义它自己发出的通知常量,这样,模型层就是一个可移植的。这也是为什么Proxies不接收通知的原因,你想,假如模型试图监听在应用其他地方定义的通知,这样模型就依赖于视图或控制层了。