1

我正在为一个大致如下所示的 PHP 项目使用策略模式。我一直在阅读这本书作为制作设计模式的参考。

策略模式样本

我可以使用单个表上的“插入”、“搜索”、“更新”具体策略类从数据库中进行简单的插入、更新或提取。

但是,当涉及到像 JOIN 或具有多个表的 VIEW 之类的复杂查询时,这些类是不够的。

如何制作一个允许我检索自定义编号的策略类。使用 JOIN 或 VIEW 的两个或多个表中的列数?或者,我应该改用存储过程吗?

目前,每个具体的策略类如下所示:

interface IStrategy {

   public function algorithm(AbstractModel $modelObj, $tablename);

}

class InsertStrategy implements IStrategy{
   public function algorithm(AbstractModel $modelObj, $tablename){
      // construct SQL statement
      // Initialize the Database Object
      // Insert data using PDO
   }
}
4

1 回答 1

0

对于您通常运行的工厂业务应用程序,我的方法是避免使用“表 API”方法并使用存储过程创建“数据 API”。您也可以使用视图来支持您的 SP。

因此,不要编写 CRUD,而是编写为您的业务层提供有用数据块的 SP。执行您可以在 SP 中执行的所有过滤器、组、排序等,并让 PHP 业务层完成业务工作。您通常可以通过通常的数据访问层(或有点想象的 ORM)访问所有 SP。

将数据准备与 SP 分开类似于将业务层隐藏在服务后面。原因和好处也都叠加在一起。

于 2013-07-29T09:10:06.147 回答