Какой шаблон проектирования уменьшить коллекцию объектов? - PullRequest
0 голосов
/ 31 декабря 2018

Мне нужно удалить некоторые сущности из коллекции сущностей, для этого я вызываю 4 службы одну за другой, чтобы удалить сущности, которые не соответствуют некоторым фильтрам.

class MainService
{
    public function removeEntities($collection)
    {
        $collection = $this->subServiceA->removeEntities($collection);
        $collection = $this->subServiceB->removeEntities($collection);
        $collection = $this->subServiceC->removeEntities($collection);
        $collection = $this->subServiceD->removeEntities($collection);

        return $collection;
    }
}

Я думаюэтот декоратор, цепь ответственности или наблюдатель могут разобраться с этим делом, но я не знаю, какой из них подходит лучше всего.

1 Ответ

0 голосов
/ 31 декабря 2018

Для этого должен подойти простой стиль очереди.

interface IEntityWorker {
    function process($item);
}

class Queue {
    protected $workers = [];

    public function registerWorker(IEntityWorker $worker) {
        $this->workers[] = $worker;
    }

    public function process($item) {
        foreach ($this->workers as $worker) {
            $item = $worker->process($item);
        }
        return $item;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...