Zpo-7-wyk-Slajd4: 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:
==Change Value to Reference==
==Decorator: uczestnicy==


[[Image:zpo-7-wyk-Slajd4.PNG|Change Value to Reference]]
[[Image:zpo-7-wyk-Slajd4.PNG|Decorator: uczestnicy]]




Przekształcenie to służy do zmiany obiektu traktowanego jako wartość w obiekt-referencję. Podczas pierwszego wykładu (zob. wprowadzenie do przedmiotu) przedstawiono różnicę pomiędzy tymi dwoma rodzajami obiektów: obiekty-wartości reprezentują niewielkie obiekty rzeczywiste i ich tożsamość jest wyznaczana na podstawie ich stanu (co oznacza, że nie można ich porównywać za pomocą operatora ==, który sprawdza identyczność referencji, a nie stanu obiektu!). Może istnieć wiele obiektów-wartości reprezentujących ten sam obiekt rzeczywisty, jednak właśnie ze względu na niemożność synchronizacji ich stanu nie mogą one zmieniać go po ich utworzeniu.
Warto zwrócić uwagę, że obiekt ConcreteComponent, aby mógł uczestniczyć w tym wzorcu, musi definiować interfejs Component, którego alternatywną implementacją są dekoratory. Ważne jest też, aby dekoratory odpowiednio delegowały swoje metody do wewnętrznych obiektów typu Component.
 
Obiekty-referencje działają w przeciwny sposób: ponieważ może istnieć tylko jeden obiekt reprezentujący obiekt rzeczywisty, dlatego nie ma konieczności porównywania ich poprzez stan; można w tym celu wykorzystać referencje i operator ==. Nie ma również zakazu modyfikacji obiektu, ponieważ problem synchronizacji nie istnieje.
 
Przekształcenie rodzaju obiektu z wartości na referencję zwykle jest efektem wzrostu złożoności obiektu i wysokiego kosztu utworzenia nowych instancji. Dlatego mechanika tego przekształcenia polega na zastąpieniu możliwości tworzenia instancji obiektu poprzez wywołanie konstruktora metodą fabryką. W kolejnym kroku jest ona wyposażona w pamięć podręczną, w której przechowuje utworzone dotychczas obiekty. Dzięki temu można wykorzystać je ponownie do obsługi kolejnych żądań utworzenia obiektów.




[[zpo-7-wyk-Slajd3 | << Poprzedni slajd]] | [[zpo-7-wyk-toc|Spis treści ]] | [[zpo-7-wyk-Slajd5 | Następny slajd >>]]
[[zpo-7-wyk-Slajd3 | << Poprzedni slajd]] | [[zpo-7-wyk-toc|Spis treści ]] | [[zpo-7-wyk-Slajd5 | Następny slajd >>]]

Aktualna wersja na dzień 19:17, 4 lis 2006

Decorator: uczestnicy

Decorator: uczestnicy


Warto zwrócić uwagę, że obiekt ConcreteComponent, aby mógł uczestniczyć w tym wzorcu, musi definiować interfejs Component, którego alternatywną implementacją są dekoratory. Ważne jest też, aby dekoratory odpowiednio delegowały swoje metody do wewnętrznych obiektów typu Component.


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