• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jaki wzorzec projektowy można zastosować w tym przypadku?

Object Storage Arubacloud
0 głosów
767 wizyt
pytanie zadane 29 października 2017 w Algorytmy przez TeslaX93 Gaduła (3,600 p.)

Witam, mam napisaną funkcję w php, która w zależności od danych na wejściu wykonuje różne operacje. Kod wygląda mniej więcej tak:

function test($we) {

$ile_pytajnikow = substr_count($we,'?');

switch($we) {

case '3': {

// jakis kod

}

case '2' : {
// jakis kod
}

case '1': {
// jakis kod
}

default: {
//jakis kod
}
return $jakaswartosc;
}

Aktualnie wybór operacji do wykonania odbywa się przy pomocy switcha, ale sprawia to, że kod jest mało skalowalny i powinienem użyć jakiegoś wzorca projektowego, tylko że nie do końca wiem jakiego.

Waham się pomiędzy budowniczym a fabryką, bo po przeczytaniu ich opisów oba trochę pasują do tego, co mam zrobić, ale prosiłbym jeszcze was o jakąś podpowiedź.

komentarz 29 października 2017 przez Tomek Sochacki Ekspert (227,510 p.)
edycja 30 października 2017 przez Tomek Sochacki
a może wzorzec Command?
komentarz 29 października 2017 przez TeslaX93 Gaduła (3,600 p.)
Jak teraz patrzę to i strategia by pasowała :/ teraz to już kompletnie nie wiem

4 odpowiedzi

+3 głosów
odpowiedź 30 października 2017 przez Benek Szeryf (91,210 p.)
Tutaj najbardziej pasuje strategia według mnie. Wzorzec budowniczy odpada, bo Ty nie potrzebujesz nowych obiektów, tylko chcesz się przełączać pomiędzy odpowiednimi operacjami.
+1 głos
odpowiedź 30 października 2017 przez mokrowski Mędrzec (156,220 p.)
Ilość kodu sugeruje że wzorzec projektowy "zdrowy rozsądek" będzie adekwatny. Zwykła mapa
index (to co w $we) -> funkcja (to co miało być w sekcji case)
wystarczy. Chyba że nie widać złożoności i powiązań pomiędzy elementami kodu lub po prostu ćwiczysz wzorce.
0 głosów
odpowiedź 30 października 2017 przez ProgramistaStepek Nałogowiec (27,020 p.)
Dokładnie tak jak mówią poprzednicy. Do przełączania się między różnymi możliwościami chyba najlepsza będzie właśnie strategia.
–1 głos
odpowiedź 30 października 2017 przez rot18ru Bywalec (2,100 p.)
Według mnie strategia nic by tu nie pomogła bo i tak byłby switch, który by zmieniał poszczególne strategie. Wzorzec komenda i łańcuch zobowiązań pozwoliłby całkowicie wyeliminować switcha. W twoim przypadku zrobiłbyś osobną klasę do wyznaczania następnika a poszczególne komendy by tylko odpowiadałby czy mogą obsłużyć żądanie. Jeśli twoje wejście będzie tylko w postaci liczby możesz sobie sprawę uprościć i zrobić tablicę komend i poszczególne rzeczy wywoływać zamieniając wejście na indeks tablicy tab[$we].execute().

Podobne pytania

0 głosów
3 odpowiedzi 2,863 wizyt
pytanie zadane 29 maja 2017 w PHP przez Turqus Obywatel (1,420 p.)
0 głosów
0 odpowiedzi 272 wizyt
pytanie zadane 22 stycznia 2017 w C# przez timrh Mądrala (6,030 p.)
0 głosów
1 odpowiedź 185 wizyt

92,698 zapytań

141,613 odpowiedzi

320,144 komentarzy

62,058 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...