由工厂替换具体类的依赖注入器的工作

时间:2014-12-29 20:13:00

标签: php dependency-injection factory

目前我正在开发一个PHP示例,并且作为依赖注入器,我正在使用Auryn。

我有以下类来表示API调用的具体用例(例如,从数据库中获取所有用户,获取书籍或无效的api请求)。此类依赖ResponseMessageFactory构建JSON响应的内容。

class NotValidApiCallUseCase implements Command{

    private $responseMessageFactory;

    public function __construct(ResponseMessageFactory $responseMessageFactory){
        $this->responseMessageFactory = $responseMessageFactory;
    }

    public function execute(){
        ...stuff...
    }

}

由于我在进行API调用时有许多可能的用例要解决,我的类负责将当前URL路由到特定的用例,使用工厂来构建具体的用例。

class UseCaseFactory{

    public function __construct(ResponseMessageFactory $responseMessageFactory){
        $this->responseMessageFactory = $responseMessageFactory;
    }

    public function build($type){
        if($type == "INVALID_API_CALL"){
            return new NotValidApiCallUseCase($this->responseMessageFactory);
        }

        ... other if ...
    }

}

但是,当我必须实例化一个用例时,就像我之前发布的NotValidApiCallUseCase一样,我必须给他所有依赖项,所以我打破了我的依赖注入器的工作。

这是个坏主意吗?我不遵循注射器的主要目的吗?我该如何解决?

0 个答案:

没有答案