|
|
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
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 >>