Zpo-8-wyk-Slajd14
Przykład(4)
Po zakończeniu integracji należy usunąć możliwość wywołania konstruktora klasy KartaCzytelnicza. W tym celu, zamiast fizycznie go usuwać, najlepiej stworzyć pusty prywatny konstruktor, ponieważ w przeciwnym przypadku kompilator i tak wygeneruje domyślny konstruktor bezparametrowy.
Drugą czynnością jest usunięcie ciała metody typKarty () w tej samej klasie i oznaczenie jej jako prywatnej. Od tego momentu klasa KartaCzytelnicza służy jedynie do przechowywania metody-fabryki i jako nadklasa dla klas reprezentujących poszczególne stany. Z punktu widzenia klienta jednak podklasy te są widoczne jedynie poprzez interfejs KartaCzytelnicza.
Efektem tego przekształcenia była zamiana pola reprezentującego stan klasy w grupę podklas, z których każda reprezentuje klasę w określonym stanie.