blabla

 avatar
unknown
php
4 years ago
792 B
15
Indexable
<?php

interface CalendarStrategy
{
   public function support(string $type): bool;
   public function create(): ModuleFindStrategy;
}

final class ModuleFindStrategyFactory
{
    public function __construct(private CalendarStrategy ...$strategies) {}

    public function create(object $module): ModuleFindStrategy
    {
       foreach($this->strategies as $strategyFactory) {
           if ($strategyFactory->support($module->type) {
               return $strategyFactory->create();
           }
       }

       return new EmptyFindStrategy();
    }
}

final class SimpleCalendarStrategy implements CalendarStrategy
{
    public function support(string $type): bool
    {
       return 'Calendar' === $type;
    }

    public function create(): ModuleFindStrategy
    {
        //
    }
}
Editor is loading...