|
|
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.
Kolejna część katalogu wzorców projektowych zostanie przedstawiona podczas kolejnego wykładu.
<< Poprzedni slajd | Spis treści | Następny slajd >>