PureMVC 中的异步数据库访问层

Asynchronous Database Access Layer in PureMVC

我正在尝试将现有项目重构为 PureMVC。这是一个 Adob​​e AIR 桌面应用程序,它利用了 AIR 中包含的 SQLite 库,并在其基础上构建了一些其他库:

我使我当前的数据库实现类似于 websql-js 的基于承诺的 SQL 访问层并且它工作得很好,但是我正在努力了解它如何在 PureMVC 中工作。

目前,我的 VO 将与 DAO(数据访问对象)配对以进行数据库访问。我遇到的问题是如何在整个程序中跟踪 dbFile 和 sqlRunner 实例。 DAO 需要了解 sqlRunner,或者至少了解 dbFile。 sqlRunner 是否应该被视为单例模式?还是为每个数据库查询创建?

最后,如何将 dbFile 或 sqlRunner 公开给 DAO?现在在我的脑海中,我看到将它们保存在一个 DatabaseProxy 中,它将暴露给其他代理,并在需要时实例化 DAO。 DAO 工厂模式怎么样?

我对 PureMVC 还很陌生,但我真的很喜欢角色的结构和分离。如果这个实现根本行不通,请不要犹豫告诉我。

通常在 PureMVC 中,您会使用 Proxy 来获取远程数据并填充 View 使用的 VO,因此在这方面您建议的架构听起来不错。

DAOs 不是我见过的与 PureMVC 结合使用的模式(这并不是说没有人这样做或应该这样做)。但是,如果我打算在 PureMVC 中编写一个 crud 应用程序,我可能会考虑 Proxy(或代理)从数据库中读取信息,然后 Commands 将其写回。