Zpo-5-wyk-Slajd45: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
Linia 1: Linia 1:
==Middle Man==
==c.d.n.==


[[Image:zpo-5-wyk-Slajd45.PNG|Middle Man]]
[[Image:zpo-5-wyk-Slajd45.PNG|c.d.n.]]




Ten przykry zapach oznacza sytuację, w której cała odpowiedzialność pewnej klasy sprowadza się do delegowania wywołań do innych klas. Jest to zatem sytuacja odwrotna do problemu o nazwie Message Chains – w tamtym przypadku liczba pośrednich odwołań była zbyt mała, w tym – jest zbyt duża. Oczywiście, istnieją sytuacje, w którym klasa będąca jedynie tłumaczem jednych metod na drugie ma uzasadnienie (np. wzorzec projektowy Adapter), ale są to wyjątki. Generalnie, klasa-pośrednik posiada zbyt mało odpowiedzialności, aby samodzielnie funkcjonować.
Kolejna część katalogu wzorców projektowych zostanie przedstawiona podczas kolejnego wykładu.


Rozwiązanie polega na usunięciu pośrednika, które można wykonać na kilka różnych sposobów. Można zastąpić wywołania poprzez pośrednika wywołaniami bezpośrednimi, co prowadzi do zwiększenia liczby powiązań między klientem (klasą wywołującą) a serwerem (klasą faktycznie obsługującą żądanie). Można usunąć zbędne metody delegujące wewnątrz pośrednika, co jednak jest tylko rozwiązaniem częściowym. Wreszcie, można zastąpić pośrednika dostępnego przez delegację podklasą – czyli zmienić delegowanie wywołań na rzecz ich dziedziczenia i pokrywania. To ostatnie rozwiązanie jest także stosowane przez jedną z wersji wzorca projektowego Adapter.


 
[[zpo-5-wyk-Slajd44 | << Poprzedni slajd]] | [[zpo-5-wyk-toc|Spis treści ]] | Następny slajd >>
[[zpo-5-wyk-Slajd44 | << Poprzedni slajd]] | [[zpo-5-wyk-toc|Spis treści ]] | [[zpo-5-wyk-Slajd46 | Następny slajd >>]]

Aktualna wersja na dzień 11:04, 17 paź 2006

c.d.n.

c.d.n.


Kolejna część katalogu wzorców projektowych zostanie przedstawiona podczas kolejnego wykładu.


<< Poprzedni slajd | Spis treści | Następny slajd >>