Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 3.Podany kod nie spełnia zasad:
- * Open-Close co można zauważyć na przykład w instrukcji warunkowej if:
- public void przygotuj() {
- System.out.println("Przygotowanie zupy ze sk?adnik?w: "+skladniki);
- System.out.println("Nalewam wod? do garnka");
- System.out.println("Wrzucam kostk? roso?ow?");
- nazwa = "ros?";
- for(Skladnik skladnik:skladniki) {
- if(skladnik instanceof Marchewka) {
- Marchewka marchewka = (Marchewka)skladnik;
- marchewka.obierz();
- marchewka.pokroj();
- }
- if(skladnik instanceof Makaron) {
- Makaron makaron = (Makaron)skladnik;
- makaron.gotuj();
- }
- }
- }
- Chcąc dodać nowy składnik zupy w powyżej przedstawionej metodzie przygotuj() wymaga to MODYFIKACJI istniejącej
- klasy (nowy składnik w instrukcji warunkowej if). Poprawnie zaimplementowany kod według zasady Open-Close
- wymagałby jedynie dodanie (ROZSZERZENIE) nowej klasy składnika.
- * Dependency Inversion co można zauważyć w:
- public void przygotuj() {
- System.out.println("Przygotowanie zupy ze sk?adnik?w: "+skladniki);
- System.out.println("Nalewam wod? do garnka");
- System.out.println("Wrzucam kostk? roso?ow?");
- nazwa = "ros?";
- for(Skladnik skladnik:skladniki) {
- if(skladnik instanceof Marchewka) {
- Marchewka marchewka = (Marchewka)skladnik;
- marchewka.obierz();
- marchewka.pokroj();
- }
- if(skladnik instanceof Makaron) {
- Makaron makaron = (Makaron)skladnik;
- makaron.gotuj();
- }
- }
- }
- Klasy wyższego poziomu zależą od klas niższego poziomu.
- Poprawnie zaimplementowany kod według zasady Dependency Inversion wymaga by klasy wyższego poziomu nie zależały od
- klas niższego. Można to uzyskać poprzez zaimplementowanie interfejsu na przykład: Składnik. Zależności między
- klasami będą wynikały jedynie z klasy abstrakcji posiadający tylko same operacje, a nie dane.
- * Single Responsiblity co można zauważyć w klasie zupa:
- Klasa Zupa może być modyfikowaną z kilku powodów co jest nie zgodne z zasadą Single Responsiblity. Dla przykładu
- może ona zostać zmieniona z powodu dodania składników zupy oraz zmiany jej składu: dodanie koncetratu do zupy.
- * INTERFACE SEGREGATION nie obowiązuje ponieważ żaden interfejs nie został wstępnie zaimplementowany
- * LISKOV’S SUBSTITUTION PRINCIPLE nie obowiązuje
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement