PHP
Pattern: Adapter
12.07.2021
233

Pattern: Adapter

interface ResponseInterface
{
    public function getData(): array;
}

class Response implements ResponseInterface
{
    private $data;

    public function __construct(array $data = [])
    {
        $this->data = $data;
    }

    public function getData(): array
    {
        return $this->data;
    }
}

class ResponseJsonService
{
    public function getData(): string
    {
        return json_encode(['foo' => 'bar']);
    }
}

class ResponseJsonAdapter implements ResponseInterface
{
    private ResponseJsonService $service;

    public function __construct(ResponseJsonService $service)
    {
        $this->service = $service;
    }

    public function getData(): array
    {
        return json_decode($this->service->getData(), true);
    }
}

$response = new Response(['foo' => 'bar']);
var_dump($response->getData());

$responseAdapter = new ResponseJsonAdapter(new ResponseJsonService);
var_dump($responseAdapter->getData());
Источник: ZetRider
PHP
Pattern: Decorator
01.12.2021
13
Pattern: Decorator

Когда использовать: дополнить, изменить, расширить поведение объекта.interface Response { /** * @return array */ public function dat...

Читать →
PHP
Pattern: Strategy
23.11.2021
33
Pattern: Strategy

Когда использовать:  условия контекста могут менять реализацию интерфейса.interface Strategy { /** * @param string $message * @retu...

Читать →
PHP
Pattern: Factory method
11.11.2021
61
Pattern: Factory method

Когда использовать: возможно использование нескольких вариантов для выполнения операции, наследующих родительское поведение, реализующие поставленную...

Читать →