Wpis z mikrobloga

Mam do rozwiązania problem: piszę prosty interpreter komend pozwalający na pewną, niewielką dowolność w ich składni. Jednak nie ich składnia jest problemem, a zestaw dostępnych komend w danym momencie. Zależnie od kontekstu w którym się znajduje użytkownik, ma on dostępne dodatkowe komendy. Kontekst zmienia się często, więc zestaw komend jest dosyć dynamicznie budowany.
Znacie jakieś typowe rozwiązanie takiego problemu? Myślicie, że wzorzec Command lub Chain of Responsibility dałby radę o ile zestaw komend bym dostarczał z jakiejś inteligentnej Fabryki? Jakieś inne wzorce bardziej pasują do tego problemu?
#programowanie #designpatterns #ood #oop
  • 5
@mamapoth: Bardzo dużo. Prawdę mówiąc to nie jest coś jak workflow gdzie masz kolejne kroki wykonywania. Tutaj kontekst zalezy od wielu czynników.

Na razie najbardziej mi pasuje Chain of Responsibility, bo mozna stosunkowo prosto budować łańcuch, gdzie w przypadku Command Patterna jakoś bym musiał dostarczyć fabrykę(string::command -> Object::executor), która najpewniej by była czymś w rodzaju łańcucha...
@Grizwold: No to niestety nic nie polecę poza Googlem – jestem PEWIEN, że są biblioteki ułatwiające pisanie takich rzeczy (skoro są dla #nieprogramowanie #php to tym bardziej będą dla Javy).

Co do wzorców, akurat Command+CommandHandler możesz „zautomatyzować” z CommandBus – czyli robisz szynę ogólną i podpinasz pod nie Handlery – a każdy Handler rozpoznaje czy wspiera Commanda i jeśli tak, to go obsługuje.

W ten sposób masz dowolną elastyczność – jak