Advertisement
kanciastopantalones

lab1wzorceprojektowe

Mar 11th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.35 KB | None | 0 0
  1. 3.Podany kod nie spełnia zasad:
  2.  
  3.  
  4. * Open-Close co można zauważyć na przykład w instrukcji warunkowej if:
  5.  
  6. public void przygotuj() {
  7. System.out.println("Przygotowanie zupy ze sk?adnik?w: "+skladniki);
  8. System.out.println("Nalewam wod? do garnka");
  9. System.out.println("Wrzucam kostk? roso?ow?");
  10. nazwa = "ros?";
  11. for(Skladnik skladnik:skladniki) {
  12. if(skladnik instanceof Marchewka) {
  13. Marchewka marchewka = (Marchewka)skladnik;
  14. marchewka.obierz();
  15. marchewka.pokroj();
  16. }
  17. if(skladnik instanceof Makaron) {
  18. Makaron makaron = (Makaron)skladnik;
  19. makaron.gotuj();
  20. }
  21.  
  22. }
  23.  
  24. }
  25.  
  26. Chcąc dodać nowy składnik zupy w powyżej przedstawionej metodzie przygotuj() wymaga to MODYFIKACJI istniejącej
  27.  
  28. klasy (nowy składnik w instrukcji warunkowej if). Poprawnie zaimplementowany kod według zasady Open-Close
  29.  
  30. wymagałby jedynie dodanie (ROZSZERZENIE) nowej klasy składnika.
  31.  
  32.  
  33. * Dependency Inversion co można zauważyć w:
  34.  
  35. public void przygotuj() {
  36. System.out.println("Przygotowanie zupy ze sk?adnik?w: "+skladniki);
  37. System.out.println("Nalewam wod? do garnka");
  38. System.out.println("Wrzucam kostk? roso?ow?");
  39. nazwa = "ros?";
  40. for(Skladnik skladnik:skladniki) {
  41. if(skladnik instanceof Marchewka) {
  42. Marchewka marchewka = (Marchewka)skladnik;
  43. marchewka.obierz();
  44. marchewka.pokroj();
  45. }
  46. if(skladnik instanceof Makaron) {
  47. Makaron makaron = (Makaron)skladnik;
  48. makaron.gotuj();
  49. }
  50.  
  51. }
  52.  
  53. }
  54.  
  55. Klasy wyższego poziomu zależą od klas niższego poziomu.
  56. Poprawnie zaimplementowany kod według zasady Dependency Inversion wymaga by klasy wyższego poziomu nie zależały od
  57.  
  58. klas niższego. Można to uzyskać poprzez zaimplementowanie interfejsu na przykład: Składnik. Zależności między
  59.  
  60. klasami będą wynikały jedynie z klasy abstrakcji posiadający tylko same operacje, a nie dane.
  61.  
  62. * Single Responsiblity co można zauważyć w klasie zupa:
  63.  
  64. Klasa Zupa może być modyfikowaną z kilku powodów co jest nie zgodne z zasadą Single Responsiblity. Dla przykładu
  65.  
  66. może ona zostać zmieniona z powodu dodania składników zupy oraz zmiany jej składu: dodanie koncetratu do zupy.
  67.  
  68. * INTERFACE SEGREGATION nie obowiązuje ponieważ żaden interfejs nie został wstępnie zaimplementowany
  69.  
  70. * LISKOV’S SUBSTITUTION PRINCIPLE nie obowiązuje
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement