3

我正在创建一个使用 MongoDB 作为数据库的网站,购买我还希望将来能够使用任何其他存储系统,所以我想使用抽象工厂模式的完整实现。通过完整的实现,我指的是:

  • “Database_factory”抽象类,客户端代码(控制器)应该使用它来创建工厂对象。
  • “Mongodb_factory”类,它扩展了 Database_factory 类。

  • 代表一组查询的“客户”抽象类。

  • 实现“客户”类的“Mongodb_customers”类。“Mongodb_customers”对象应该由“Mongodb_factory”返回。

我确切地知道如何使用纯 OO PHP 做到这一点。但我不知道如何将它与 CodeIgniter 提供的模型架构合并。

只使用“Customers”抽象类,然后使用“Mongodb_customers”来实现它很容易,但我也想使用工厂。

当你需要 CodeIgniter 中的模型时,你只需使用“$this->load->model('my_model');” 并使用它的功能,但是如何创建一个工厂对象,并使其返回您需要的具体模型,您可以通过接口(抽象类)使用它?

有没有机会实现这一目标?

感谢你们所有人。

4

1 回答 1

1

嗯-所以你希望能够在不同的数据库实现之间切换。适配器模式不是更适合这个吗?您只需要创建一个包装新数据库的新模型并调用它。我认为抽象工厂只是为了创建一组相关/依赖对象而不暴露它们的具体类。如果这就是您想要做的,那么我认为您可以创建一个充当工厂的模型,然后创建扩展抽象类模型的其他模型(我从未尝试过,但我认为您可以尝试在类来扩展它)。这样,当您加载工厂时,您可以调用其中一种方法,其方法将为您加载正确的实现(加载发生在工厂的方法中)。

于 2012-06-03T13:30:23.963 回答