• 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?

Aruba Cloud - Virtual Private Server VPS
0 głosów
958 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,490 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 (93,070 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 (158,200 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 3,090 wizyt
pytanie zadane 29 maja 2017 w PHP przez Turqus Obywatel (1,420 p.)
0 głosów
0 odpowiedzi 289 wizyt
pytanie zadane 22 stycznia 2017 w C# przez timrh Mądrala (6,010 p.)
0 głosów
1 odpowiedź 232 wizyt

93,337 zapytań

142,332 odpowiedzi

322,423 komentarzy

62,676 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...