Różnice między wybraną wersją a wersją aktualną.
|
most [2008/12/11 14:53] gstryjew utworzono stone opisujaca wzorzec most |
most [2008/12/11 16:29] (aktualna) gstryjew |
||
|---|---|---|---|
| Linia 2: | Linia 2: | ||
| Wzorzec Mostu (ang. //Bridge pattern//) jest wzorcem strukturalnym. Wzorzec oddziela abstrakcję od jej implementacji. Pozwala to na usunięcie powiązań pomiędzy implementacją a obiektami które ją wykorzystują, co powoduje, że abstrakcja i implementacja mogą zmieniać się niezależnie od siebie. | Wzorzec Mostu (ang. //Bridge pattern//) jest wzorcem strukturalnym. Wzorzec oddziela abstrakcję od jej implementacji. Pozwala to na usunięcie powiązań pomiędzy implementacją a obiektami które ją wykorzystują, co powoduje, że abstrakcja i implementacja mogą zmieniać się niezależnie od siebie. | ||
| - | - **Zastosowanie** | + | ====Zastosowanie==== |
| * Ukrycie implementacji przed klientem. Metody abstrakcji wywołują metody dostępne przez interfejs implementacji. Tworząc nową klasę pochodną Abstrakcji nie odwołujemy się bezpośrednio do implementacji, a jedynie do metod klasy bazowej abstrakcji, które stanowią opakowanie dla metod implementacji. | * Ukrycie implementacji przed klientem. Metody abstrakcji wywołują metody dostępne przez interfejs implementacji. Tworząc nową klasę pochodną Abstrakcji nie odwołujemy się bezpośrednio do implementacji, a jedynie do metod klasy bazowej abstrakcji, które stanowią opakowanie dla metod implementacji. | ||
| * Abstrakcje i implementacje można łatwo rozbudować poprzez dodanie nowych klas pochodnych. | * Abstrakcje i implementacje można łatwo rozbudować poprzez dodanie nowych klas pochodnych. | ||
| Linia 8: | Linia 8: | ||
| * Wiele obiektów może współdzielić implementację. Abstrakcja przechowuje wskazanie na klasę bazową implementacji, co umożliwia wykorzystanie jednej implementacji przez wiele obiektów. | * Wiele obiektów może współdzielić implementację. Abstrakcja przechowuje wskazanie na klasę bazową implementacji, co umożliwia wykorzystanie jednej implementacji przez wiele obiektów. | ||
| - | - **Struktura**\\ | + | ====Struktura==== |
| Zdefiniowany jest wspólny interfejs dla wszystkich konkretnych implementacji (ImplementacjaInter), który jest wykorzystywany przez klasę abstrakcyjną Abstrakcja. Abstrakcja przekazuje polecenia klienta do obiektu implementacji. | Zdefiniowany jest wspólny interfejs dla wszystkich konkretnych implementacji (ImplementacjaInter), który jest wykorzystywany przez klasę abstrakcyjną Abstrakcja. Abstrakcja przekazuje polecenia klienta do obiektu implementacji. | ||
| {{ diagrammost.jpeg |}} | {{ diagrammost.jpeg |}} | ||
| - | - **Most umożliwia:** | + | ====Most umożliwia:==== |
| * oddzielenie interfejsu od implementacji | * oddzielenie interfejsu od implementacji | ||
| * łatwą rozbudowa klas (abstrakcji i interfejsu) | * łatwą rozbudowa klas (abstrakcji i interfejsu) | ||
| * ukrycie szczegółów implementacji przed klientem, co pozwala na zmianę implementacji bez konieczności zmiany interfejsu | * ukrycie szczegółów implementacji przed klientem, co pozwala na zmianę implementacji bez konieczności zmiany interfejsu | ||
| - | - **Przykład zastosowania wzorca**\\ | + | ====Przykład zastosowania wzorca==== |
| Prosty program demonstrujący wykorzystanie wzorca Most do rysowania różnych kształtów z wykorzystaniem różnych bibliotek graficznych. Program ma pokazać sposób wykorzystania wzorca, nie działania bibliotek, dlatego rysowanie jest zastąpione drukowaniem tekstu na ekranie z informacją która biblioteka została użyta. | Prosty program demonstrujący wykorzystanie wzorca Most do rysowania różnych kształtów z wykorzystaniem różnych bibliotek graficznych. Program ma pokazać sposób wykorzystania wzorca, nie działania bibliotek, dlatego rysowanie jest zastąpione drukowaniem tekstu na ekranie z informacją która biblioteka została użyta. | ||
| - | - **Kod** | ||
| <code cpp> | <code cpp> | ||
| /************************************** | /************************************** | ||