mercredi 21 février 2018

Is this a valid usage of the Factory pattern? multiple dependancies

I want to create a set of dependancies instead of injecting them everywhere. Would the factory pattern support this idea? Or is there another pattern for dealing with it?

For example:

class PassportCheckFactory {
    protected $clientInstance;
    protected $responseInstance;

    public function buildDependancies() : bool
    {
        $this->clientInstance       = new PassportCheckSoapClient;
        $this->responseInstance    = new PassportCheckResponse;

        return true;
    }

    public function getResponseInstance()
    {
        return $this->responseInstance;
    }

    public function getClientInstance()
    {
        return $this->clientInstance;
    }
}

This creates and holds the classes we would use, so we wouldn't need to inject them.

For example, we can do this

$request = new WhateverRequestClass;
$factory = (new PassportCheckFactory)->buildDependancies();
$service = new PassportCheckService($request, $factory);
$response = $service->execute();

instead of:

$request = new WhateverRequestClass;
$service = new PassportCheckService($request, new PassportCheckSoapClient, new PassportCheckResponse);
$response = $service->execute();   

Aucun commentaire:

Enregistrer un commentaire