pureMVC体会

  转:http://bbs.blueidea.com/thread-2969949-1-1.html

        1,模型部分在实际开发中除了存储数据,还有其他作用么?是的,其实它的实际职责非常多。它要给Command和Mediator提供接口,响应用户操作,进行数据操作或者请求远程数据服务,进行数据的序列化和反序列化,得到异步数据后可能还要检查数据合法化。但不管怎么样,它始终是在和数据打交道,同时也应该是你的主程序中唯一可以直接和数据打交道的管道,别的部分要想和数据有接触,首先要问问它同意不同意。模型处理完数据会以Notification的消息方式通知Command或者Mediator。但绝对不能在Proxy中直接调用Mediator,这是为了保证数据层的独立性、可移植性和重用性,也简化了你的架构思想。不过可移植性这个优势,估计很多搞FLASH WEB GAME的朋友暂时都没啥机会体验,呵呵。

        2,Command,Command,Command!连叫三声“Command”,希望可以引起大家的注意。因为Command的使用,在很大程度上反映着你对pureMVC框架的理解,甚至是对MVC模式的理解深度。在pureMVC框架中,各部分通讯是用Notification消息,Proxy可以给Command和Mediator发消息,Command可以给Command和Mediator发消息,Mediator可以给Command和Mediator发消息,怎么样?你现在是不是点晕了,这是正常的,其实我也有点晕!当你代码写到一定规模后,你会更晕。其实pureMVC框架这么设计本来是为了让MVC各部分尽量脱耦,但这带来一个负面情况就是消息发送与接收机制设计的太灵活了,灵活对小项目是好事,但对大项目来说,往往意味着混乱,甚至会导致灾难。那怎么办呢?只能靠我们的自觉性自我约束,简化架构思想了。根据《pureMVC最佳实践》中的建议,我的做法是这样的,尽量使用Command,让Command成为Mediator与Proxy之间通讯的唯一桥梁,Mediator和Proxy中发出的Notification,接收者一定是某个Command,然后再由Command处理并将结果转发给真正的消息接收者,Command就算仅仅起一个转发作用,仅仅有不到10行代码,也要创建一个Command类。这样不仅使你的架构更加清晰,而且也更符合MVC思想,Command类的大量存在还使你架构的业务逻辑具有了更好的封装性和扩展性,可谓是一箭三雕,何乐而不为?唯一的负面影响可能是你需要创建和维护更多的Command类文件,但相对于优势而言,这点影响不算啥。

        3,请审查你的Mediator类,看里面是不是充斥着大量的public方法,如果你的对象之间依旧是通过public方法进行引用,而不是通过Notification通讯的,那你也没有必要继续使用pureMVC框架了。

        4,单例模式影响到底有多大?pureMVC是一个完全依赖单例模式的框架。单例模式似乎在AS界一直有很大争议,这样的话,pureMVC肯定也会有相应的争议了。持反对意见的人,大多集中在“性能”和“团队协作”方面,他们认为一个单例持有过多引用会带来性能问题,而且生怕在团队协作中自己的单例类被人无意修改,引发离奇的BUG。性能方面,我之前也没做过10W以上的项目,不敢妄言,但10W行以下的项目,绝对没有问题,如果你两三万行的架构就开始碰到主架构性能问题,估计十有八九是自己的代码写的有问题;团队协作方面,我觉得pureMVC的Façade模式是非常灵活好用的,大家可以略做讨论,制定一个简单的规则,比如模块只能通过façade获取数据和发送Notification,不能直接调用主程序其他CLASS,只要架构程序员不犯错,模块程序员甚至连犯错的机会都没有,如果他们有,还是你的架构思路有问题,请继续审视自己的代码。反正单例模式的问题到底是什么,我到现在也没完全搞懂,主要是我们的项目没碰到过此类问题,希望碰到过的朋友能再仔细跟火山说说,我也好弄清楚问题到底出在哪里了,自己以后可以更好的避免此类问题发生。

原文地址:https://www.cnblogs.com/sevenyuan/p/1680644.html