I. Wzorce kreacyjne 1. Singleton 2. Budowniczy 3. Prototyp 4. Fabryka 5. Fabryka abstrakcyjna II. Wzorce strukturalne 1. Adapter 2. Most 3. Kompozyt 4. Dekorator 5. Fasada 6. Pyłek 7. Pełnomocnik III. Wzorce czynnościowe 1. Łańcuch zobowiązań 2. Polecenie 3. Interpreter 4. Iterator 5. Mediator 6. Pamiątka 7. Obserwator 8. Stan 9. Strategia 10. Metoda szablonowa 11. Odwiedzający |
Prototyp - Prototype - wzorzec projektowy (design pattern) - java1. Cel:Uzyskać szybkie tworzenie obietku z domyślnymi wartościami, aby nie było kosztowne użycie słowa kluczego new i przypisania wartości domyślnych. 2. Problem: Mamy obiekt i chcemy stworzyć jego kopię wraz z domyślnymi wartościami, więc musisz stworzyć nowy obiekt i przypisać mu wszystkie potrzebne pola. 3. Rozwiązanie: Użycie interface-u Cloneable oraz metody clone do stworzenia kopii obiektu. Prototyp odnosi się do obiektów implementującym wspólny interface 4. Diagram klas klasy prototyp: 5. Implementacja: a) Implementacja wzorca Prototyp połączona z wzorcem projektowym singleton: Abstrakcyjna klasa która będzie dziedziczona przez klasy właściwe.
Banda czworga id:1163157884 Banda czworga id:1956725890 b) implementując metodę clone można to zrobić na dwa sposoby: - płytkie klonowanie - głębkie klonowanie Trzeba uważać czy na pewno chcemy płytkiego klonowania, może to stworzyć problemy:
Wynik: stmt_Id:1163157884 ,listSize=2 Rekord_Id: 1956725890 stmtClone_Id:356573597 ,listSize=3 Rekord_Id: 1956725890 stmt_Id:1163157884 ,listSize=3 Rekord_Id: 1956725890 Jest to płytkie kopiowanie przez co obiekty takie jak List<> i Rekord są tym samym obiektem po klonowaniu. Zmiana elemtnów List<> powoduje że w obydwu obiektach stmt i stmtClone się zmieni Gdy zrobimy operacje na obiekcie Rekord, również w dwóch miejscach będą widzoczne zmiany Dlatego należało by stworzyć nową List<> listę obiektów oraz kolejny klon obiektu Rekord. Czyli głębokie klonowanie 6. Zastosowanie w kodzie java: java.lang.Object#clone() - klasa musi implementować interface: java.lang.Cloneable |
---|