用于代码点火器模型的完整抽象工厂模式


Full abstract factory pattern to use for Code Igniter models

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

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

  • "客户"抽象类,表示一组查询。

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

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

只有"客户"抽象类,然后是"Mongodb_customers"来实现它很容易,但我也想利用工厂。

当你在CodeIgniter中需要一个模型时,你只需使用"$this->load->model('my_model'(;"并使用它的函数,但是如何创建一个工厂对象,并让它返回你需要的具体模型,你通过接口(抽象类(使用?

有机会实现这一目标吗?

感谢你们所有人。

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