Zpo-6-wyk-Slajd3: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
== | ==Factory Method: struktura== | ||
[[Image:zpo-6-wyk-Slajd3.PNG| | [[Image:zpo-6-wyk-Slajd3.PNG|Factory Method: struktura]] | ||
Klient odwołuje się do dwóch interfejsów (lub klas abstrakcyjnych): Creator, zawierającej metodę tworzącą produkty, i Product, reprezentującą obiekty tworzone przez Factory Method. Oba interfejsy posiadają implementacje powiązane parami: obiekt klasy ConcreteCreator o przeciążonej metodzie ''factoryMethod'' ''()'' tworzy instancję obiektu ConcreteProduct. Dzięki temu, podczas zmiany obiektu Creator, jednocześnie zmieniany jest tworzony produkt. Warto zwrócić na dualizm hierarchii klas produktu i kreatora, który pozwala na abstrakcyjne traktowanie całego procesu tworzenia obiektów za pomocą wymiennych producentów, co jest niemożliwe przy bezpośrednim użyciu konstruktora. | |||
Z punktu widzenia klienta metoda ''factoryMethod'' ''()'' jest równoważna pod względem funkcjonalnym z konstruktorem: jej wywołanie powoduje utworzenie obiektu żądanego typu. Warto zwrócić uwagę, że wzorzec ten pozwala także na dodatkowy stopień swobody: bezpośrednie wywołanie konstruktora przez klienta zawsze powoduje utworzenie obiektu konkretnej klasy (konstruktory nie są metodami polimorficznymi), natomiast użycie wzorca Factory Method pozwala metodzie tworzącej obiekty na wybór klasy obiektu i sposobu jego tworzenia. | |||
[[zpo-6-wyk-Slajd2 | << Poprzedni slajd]] | [[zpo-6-wyk-toc|Spis treści ]] | [[zpo-6-wyk-Slajd4 | Następny slajd >>]] | [[zpo-6-wyk-Slajd2 | << Poprzedni slajd]] | [[zpo-6-wyk-toc|Spis treści ]] | [[zpo-6-wyk-Slajd4 | Następny slajd >>]] |
Aktualna wersja na dzień 11:10, 17 paź 2006
Factory Method: struktura
Klient odwołuje się do dwóch interfejsów (lub klas abstrakcyjnych): Creator, zawierającej metodę tworzącą produkty, i Product, reprezentującą obiekty tworzone przez Factory Method. Oba interfejsy posiadają implementacje powiązane parami: obiekt klasy ConcreteCreator o przeciążonej metodzie factoryMethod () tworzy instancję obiektu ConcreteProduct. Dzięki temu, podczas zmiany obiektu Creator, jednocześnie zmieniany jest tworzony produkt. Warto zwrócić na dualizm hierarchii klas produktu i kreatora, który pozwala na abstrakcyjne traktowanie całego procesu tworzenia obiektów za pomocą wymiennych producentów, co jest niemożliwe przy bezpośrednim użyciu konstruktora.
Z punktu widzenia klienta metoda factoryMethod () jest równoważna pod względem funkcjonalnym z konstruktorem: jej wywołanie powoduje utworzenie obiektu żądanego typu. Warto zwrócić uwagę, że wzorzec ten pozwala także na dodatkowy stopień swobody: bezpośrednie wywołanie konstruktora przez klienta zawsze powoduje utworzenie obiektu konkretnej klasy (konstruktory nie są metodami polimorficznymi), natomiast użycie wzorca Factory Method pozwala metodzie tworzącej obiekty na wybór klasy obiektu i sposobu jego tworzenia.