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] 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> | ||
/************************************** | /************************************** |