Zpo-6-wyk-Slajd29: 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:
==Przykład==
==Memento: implementacja==


[[Image:zpo-6-wyk-Slajd29.PNG|Przykład]]
[[Image:zpo-6-wyk-Slajd29.PNG|Memento: implementacja]]




Przedstawiona na przykładzie zmienna saldo przechowuje kilka różnych wartości. W efekcie przekształcenia jest ona rozbita na kilka innych zmiennych, do których przypisania następują tylko raz. Oczywiście, przekształcenie to zwiększa liczbę zmiennych lokalnych, jednak można je w dalszej części refaktoryzacji usunąć, stosując m.in. przekształcenie Replace Temp with Query.
Struktura wzorca jest dość oczywista i nie wymaga komentarza. Warto jednak zastanowić się nad sposobem zapewnienia zróżnicowanego dostępu do obiektów Memento dla dwóch różnych klas. Implementacja wzorca w znacznym stopniu zależy od możliwości oferowanych przez język programowania. W przypadku języka C++ może to być zaprzyjaźnienie klas, które pozwala wybranym klasom odwoływać się do swoich składowych jak do elementów prywatnych. Niestety, istnieje grupa języków nie posiadających takich możliwości. W języku Java możliwym rozwiązaniem jest zastosowanie klasy wewnętrznej do reprezentacji obiektu Memento. W ten sposób jedynie jej klasa zewnętrzna posiada dostęp do jej składowych niepublicznych, natomiast inne klasy nie mają o niej żadnej wiedzy.
 
Dzięki wykonaniu przekształcenia każda zmienna lokalna ma przypisaną wartość tylko raz.




[[zpo-6-wyk-Slajd28 | << Poprzedni slajd]] | [[zpo-6-wyk-toc|Spis treści ]] | [[zpo-6-wyk-Slajd30 | Następny slajd >>]]
[[zpo-6-wyk-Slajd28 | << Poprzedni slajd]] | [[zpo-6-wyk-toc|Spis treści ]] | [[zpo-6-wyk-Slajd30 | Następny slajd >>]]

Aktualna wersja na dzień 11:10, 17 paź 2006

Memento: implementacja

Memento: implementacja


Struktura wzorca jest dość oczywista i nie wymaga komentarza. Warto jednak zastanowić się nad sposobem zapewnienia zróżnicowanego dostępu do obiektów Memento dla dwóch różnych klas. Implementacja wzorca w znacznym stopniu zależy od możliwości oferowanych przez język programowania. W przypadku języka C++ może to być zaprzyjaźnienie klas, które pozwala wybranym klasom odwoływać się do swoich składowych jak do elementów prywatnych. Niestety, istnieje grupa języków nie posiadających takich możliwości. W języku Java możliwym rozwiązaniem jest zastosowanie klasy wewnętrznej do reprezentacji obiektu Memento. W ten sposób jedynie jej klasa zewnętrzna posiada dostęp do jej składowych niepublicznych, natomiast inne klasy nie mają o niej żadnej wiedzy.


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