何时使用DAO / Repository以及何时使用Inversion of Control?

时间:2016-03-09 22:56:21

标签: php oop dependency-injection inversion-of-control dao

目的:

我正在寻求“在我的Controller类中获取数据”。我试图评估两种方法。

  • 将DAO注入我的控制器 - 控制器意识到“外来”数据提供构造(存储库,DAO,模型)。 Controller可以查询这些结构以接收所需的数据。

  • 在其他地方创建和填充控制器 - 控制器不会识别任何“外部”数据提供构造。它由所需的数据直接填充。

注入数据访问对象

我可以将我的DAO对象注入Controller并使用它来调用与我想要实现的功能相关的各种数据。

$controller = new Controller(New DAO());
echo $controller->dao->getData();

我的控制器是知道的DAO。

直接创建和填充控制器

我可以使用Factory Method或Builder模式或DataMapper以及 create&使用所需的数据填充我的控制器,而无需将任何DAO注入控制器本身。

//factory
$data = $this->entityManager->getSomeData();
$controller = new Controller();
$controller->setData($data);
echo $controller->getData();
return $controller;

控制器不知道DAO的。它只是直接在其他地方填充数据。

在什么情况下推荐哪种方式?

0 个答案:

没有答案