我有实现相同合同和模式的存储库类,所以基本上我有一堆theese:
class EmployeeRepository {
private $transformer; //instance of EmployeeTransformer
public function find() {
return new ReturnObject($this->transformer, $employee);
}
}
class CustomerRepository {
private $transformer; //instance of CustomerTransformer
public function find() {
return new ReturnObject($this->transformer, $customer);
}
}
正如您所看到的,它们都返回一个ReturnObject,它基本上将变换器对象和实体对象作为构造函数参数。变换器用于ReturnObject以确定控制器类的输出格式。
class ReturnObject {
private $transformer;
private $response;
function __construct($transformer, $entity) {
$this->transformer = $transformer;
$this->entity = $entity;
$this->response = new ApiResponse();
}
public function apiResponse() {
return $this->response->array($this->transformer, $entity);
}
}
我的问题是关于变压器的构造函数参数。有没有办法使repositor能够将正确的转换器类传递给ReturnObject而不必将其作为构造函数参数发送?也许有工厂模式设计? 我想从构造函数中删除参数有两个原因:
构造函数已经有很多参数。 (我已从上面的示例中删除它们,以使代码更易于理解,但实际上除了变换器之外,构造函数已经有6个参数)
我有很多具有很多功能的存储库,并且不必在所有返回中发送变换器以减少代码和潜在的错误