Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zasada jednej odpowiedzialności
Forum PHP.pl > Forum > Przedszkole
szczrzcz
"Nigdy nie powinno być więcej niż jednego powodu do modyfikacji klasy."

Nie rozumiem tego krótkiego zdania.

"...POWÓD do modyfikacji klasy. "

"Jaki masz POWÓD do modyfikacji klasy?"

Co za cholerny POWÓD? Mogę znaleźć milion powodów do modyfikacji poniższej klasy, która jest wzorem klasy gdzie "jest zachowana zasada jednej odpowiedzialności":

  1. //pseudokod
  2. class Pocisk{
  3. public Pocisk()
  4. {
  5. _trafnoscPocisku = 0.5;
  6. _pociskZniszczylCel = false;
  7. _pociskaZostalZuzyty = false;
  8. }
  9.  
  10. public void Zniszcz()
  11. {
  12. if (!SprawdzCzyPociskZostalZuzyty())
  13. {
  14. _pociskaZostalZuzyty = true;
  15.  
  16. if (SprawdzCzyPociskZniszczylCel())
  17. _pociskZniszczylCel = true;
  18. else
  19. _pociskZniszczylCel = false;
  20. }
  21. else
  22. {
  23. throw new PociskZostalJuzZuzyty();
  24. }
  25. }
  26.  
  27. private bool SprawdzCzyPociskZostalZuzyty()
  28. {
  29. return _pociskaZostalZuzyty == false;
  30. }
  31.  
  32. private bool SprawdzCzyPociskZniszczylCel()
  33. {
  34. var rand = new Random();
  35. return rand.NextDouble() < _trafnoscPocisku;
  36. }
  37. }


Mogę chcieć dodać metodę: sprawdz_czy_pocisk_jest_czysty(), czysc(), i sto innych absurdalnych.
nospor
Ten "jeden powod" bierzesz zbyt doslownie.

Metody, ktore wymieniles to nadal jeden powod. Tym powodem jest twoj pocisk.
Co innego, jakbys chcial dopisac metode: dostarczycPizzeDlaZolnierzy()
Wowczas masz dwa powody do modyfikacji klasy: pocisk i zolnierze
szczrzcz
dzięki, chyba bardziej nie zrozumiałem słowa "modyfikacja" klasy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.