Wpis z mikrobloga

Mirki robię "API" do WebSocketów i zastanawiam się jak to powinno być zrobione zgodnie ze sztuką.
Dajmy na to że mam 2 zdarzenia 'create' i 'update'.

Jak ja to widzę:
Tworzę 2 handlery CreateHander i UpdateHander. Dodaję je do kolekcji HandlersCollection.
Handlery implementują interfejs HandlerInterface który ma metody:
support(Request request): bool
handle(Request request): void

Gdy przychodzi Request to wywołuję foreach na kolekcji handlerów.
Szukam odpowiedniego handlera - do tego bedzię słóżyć metod support, w niej sprawdzam np czy type == 'create'.

request = ... ;
foreach (HandlersCollection as handler) {
    if (handler->support(request)) {
        handler->handle(request);
    }
}

Czy jest lepsze podejście do tego typu problemu? Jakiś wzorzec?

#php #symfony #laravel #programista15k
  • 16