Zpo-6-wyk-Slajd36: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
== | ==Prototype: przykład== | ||
[[Image:zpo-6-wyk-Slajd36.PNG| | [[Image:zpo-6-wyk-Slajd36.PNG|Prototype: przykład]] | ||
W języku Java wzorzec ten jest zaimplementowany bezpośrednio w maszynie wirtualnej. Każdy obiekt posiada metodę ''clone'' ''(),'' a co za tym idzie – potencjalną możliwość klonowania siebie. Jednak aby skorzystać z tej możliwości, konieczne jest zaimplementowanie w wybranej klasie interfejsu ''Cloneable'' . Interfejs ten nie definiuje żadnych metod, a jedynie pełni rolę znacznika, wskazującego, że dana klasa posiada uprawnienie do klonowania samej siebie. Próba wywołania tej metody bez zaimplementowania interfejsu powoduje zgłoszenie wyjątku. | |||
Domyślnie wywołanie metody ''clone'' ''()'' powoduje utworzenie tzw. płytkiej kopii obiektu, tzn. obiekty zależne są kopiowane jako referencje, a nie jako obiekty. Płytka kopia jest bezpieczna, ponieważ nie powoduje rekurencyjnego alokowania znacznych obszarów pamięci. Jeżeli istnieje potrzeba realizacji tzw. głębokiej kopii, zadanie jej zaimplementowania leży po stronie programisty. | |||
[[zpo-6-wyk-Slajd35 | << Poprzedni slajd]] | [[zpo-6-wyk-toc|Spis treści ]] | [[zpo-6-wyk-Slajd37 | Następny slajd >>]] | [[zpo-6-wyk-Slajd35 | << Poprzedni slajd]] | [[zpo-6-wyk-toc|Spis treści ]] | [[zpo-6-wyk-Slajd37 | Następny slajd >>]] |
Aktualna wersja na dzień 11:10, 17 paź 2006
Prototype: przykład
W języku Java wzorzec ten jest zaimplementowany bezpośrednio w maszynie wirtualnej. Każdy obiekt posiada metodę clone (), a co za tym idzie – potencjalną możliwość klonowania siebie. Jednak aby skorzystać z tej możliwości, konieczne jest zaimplementowanie w wybranej klasie interfejsu Cloneable . Interfejs ten nie definiuje żadnych metod, a jedynie pełni rolę znacznika, wskazującego, że dana klasa posiada uprawnienie do klonowania samej siebie. Próba wywołania tej metody bez zaimplementowania interfejsu powoduje zgłoszenie wyjątku.
Domyślnie wywołanie metody clone () powoduje utworzenie tzw. płytkiej kopii obiektu, tzn. obiekty zależne są kopiowane jako referencje, a nie jako obiekty. Płytka kopia jest bezpieczna, ponieważ nie powoduje rekurencyjnego alokowania znacznych obszarów pamięci. Jeżeli istnieje potrzeba realizacji tzw. głębokiej kopii, zadanie jej zaimplementowania leży po stronie programisty.