使用工厂模式简化Extjs4.2 MVC:去除Model与Store层

4星 · 超过85%的资源 需积分: 10 11 下载量 177 浏览量 更新于2024-09-13 1 收藏 91KB DOC 举报
在ExtJS 4.2的MVC架构中,理解并简化Model层和Store层的管理是提升代码效率的关键。本文档主要介绍了如何通过移除Model层和Store层的独立定义,并采用工厂模式进行集成。作者张川在学习过程中发现,虽然ExtJS官方MVC设计有其优点,但在实际项目中,过于复杂的层次结构可能导致代码冗余和维护困难。 首先,我们了解一下为什么要抽离Model层和Store层。在传统的MVC架构中,Model负责数据处理和业务逻辑,Store则是数据的持久化存储和数据集的管理。然而,在大型项目或组件重用的场景下,频繁创建这些对象可能会导致代码重复,且不便于统一管理和调整。工厂模式在这种情况下显得尤为重要,它提供了一种方式来创建和管理可复用的对象实例,而无需每次请求都重新定义。 ModelFactory.js是一个关键文件,它是自定义的数据模型和字段工厂。这个工厂类包含两个集合,一个是models集合,用于存储所有创建的Model实例;另一个是fields集合,存储对应Model的字段信息。当需要一个新的Model时,工厂会检查该Model是否已经存在于models集合中。如果存在,直接返回;如果不存在,则通过Ajax请求从服务器获取字段信息,然后创建新的Model实例并添加到models集合中。 具体实现步骤如下: 1. 在ModelFactory中,定义一个`getModel`方法,接收model名称作为参数。 2. 检查models集合中是否已有该model,如果有,直接返回。 3. 如果没有,发送异步POST请求到服务器,传入model名称获取字段信息。 4. 服务器返回响应后,解析JSON数据,将字段数组存储到`fields`集合中,并根据字段创建新的Model实例。 5. 返回新创建的Model实例,同时将其添加到models集合中以便后续访问。 通过这种方式,代码变得简洁,易于扩展和维护。每次只需要创建一个ModelFactory实例,调用`getModel`方法,就可以得到所需的Model实例,同时减少了对Store层的依赖。这种方式提高了代码的复用性和灵活性,使得整个系统更易于理解和管理。然而,这并不意味着完全摒弃了MVC的基本原则,而是找到了一种在实际开发中优化和适应的方式。