Zpo-9-wyk-Slajd38

Z Studia Informatyczne
Wersja z dnia 18:05, 4 lis 2006 autorstwa Bwalter (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Encapsulate Collection

Encapsulate Collection


Problem rozwiązywany przez to przekształcenie został już omówiony w zarysie podczas pierwszego wykładu. Polega on na udostępnieniu do modyfikacji kolekcji poza kontrolą jej właściciela. Właściciel, poprzez metodę typu get (), przekazuje klientom referencję do kolekcji, która następnie może być swobodnie modyfikowana. Celem przekształcenia jest przeniesienie odpowiedzialności za modyfikację kolekcji z niej samej do jej właściciela.

Refaktoryzacja rozpoczyna się od zdefiniowania w klasie właściciela metod add () i remove () dla elementów kolekcji, a następnie przeniesienie wywołań metod kolekcji do nowo utworzonych metod w klasie jej właściciela. Drugim krokiem jest zmiana metody zwracającej referencję do kolekcji w taki sposób, aby nie pozwalała ona na modyfikację tej kolekcji. Istnieje kilka możliwych rozwiązań: użycie specjalizowanego opakowania kolekcji (zob. wzorzec Decorator), który uniemożliwi jej modyfikację (omówionego podczas wykładu nt. kolekcji w języku Java), lub po prostu zwrócenie jej kopii.


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