Zpo-8-wyk-Slajd48: 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:
==Introduce Local Extension==
==Speculative Generality==


[[Image:zpo-8-wyk-Slajd48.PNG|Introduce Local Extension]]
[[Image:zpo-8-wyk-Slajd48.PNG|Speculative Generality]]




Innym rozwiązaniem problemu niekompletnej biblioteki jest utworzenie jej rozszerzenia w postaci podklasy lub opakowania. Dzięki temu możliwe jest (w przeciwieństwie do poprzedniego przekształcenia) umieszczenie metod we właściwym miejscu. Wybór pomiędzy dziedziczeniem a delegacją często podyktowany jest możliwościami zastosowania jednej albo drugiej techniki: dziedziczenie wymaga, aby klasa biblioteczna nie była sfinalizowana, natomiast delegacja – publicznego dostępu do najważniejszych metod.
Ostatni przykry zapach podany przez Fowlera to – mówiąc kolokwialnie - nadmierna elastyczność i otwartość systemu na zmiany, które nigdy nie nastąpią. Jedną z podstawowych zasad projektowania obiektowego jest hermetyzacja obszarów zmienności, jednak pod warunkiem, że ta zmienność faktycznie występuje. Optymistyczne zakładanie zmian w pewnych kierunkach zwykle okazuje się nieuzasadnione i prowadzi do nadmiernie rozbudowanej struktury kodu w stosunku do potrzeb.


Mechanika przekształcenia polega na utworzeniu klasy-rozszerzenia, zdefiniowaniu w niej konstruktora (w przypadku delegacji musi to być konstruktor konwertujący – zob. wzorzec Decorator) i dodaniu nowych funkcji. Ostatnim krokiem jest aktualizacja klientów, którzy wymagają dostępu do rozszerzonej klasy.
Uproszczenie jest realizowane poprzez usuwanie zbędnych klas, ograniczanie hierarchii dziedziczenia, usuwanie pośredników, metod pomocniczych, nadmiarowych parametrów etc.




[[zpo-8-wyk-Slajd47 | << Poprzedni slajd]] | [[zpo-8-wyk-toc|Spis treści ]] | [[zpo-8-wyk-Slajd49 | Następny slajd >>]]
[[zpo-8-wyk-Slajd47 | << Poprzedni slajd]] | [[zpo-8-wyk-toc|Spis treści ]] | [[zpo-8-wyk-Slajd49 | Następny slajd >>]]

Aktualna wersja na dzień 18:15, 4 lis 2006

Speculative Generality

Speculative Generality


Ostatni przykry zapach podany przez Fowlera to – mówiąc kolokwialnie - nadmierna elastyczność i otwartość systemu na zmiany, które nigdy nie nastąpią. Jedną z podstawowych zasad projektowania obiektowego jest hermetyzacja obszarów zmienności, jednak pod warunkiem, że ta zmienność faktycznie występuje. Optymistyczne zakładanie zmian w pewnych kierunkach zwykle okazuje się nieuzasadnione i prowadzi do nadmiernie rozbudowanej struktury kodu w stosunku do potrzeb.

Uproszczenie jest realizowane poprzez usuwanie zbędnych klas, ograniczanie hierarchii dziedziczenia, usuwanie pośredników, metod pomocniczych, nadmiarowych parametrów etc.


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