1 / 15

Obiektowe metody projektowania systemów

Obiektowe metody projektowania systemów. Design Patterns STRATEGY. Wstęp:. Strategy (strategia): - należy do tzw. behawioralnych wzorców projektowych, czyli charakteryzujących oddziaływania pomiędzy obiektami.

brendy
Download Presentation

Obiektowe metody projektowania systemów

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Obiektowe metody projektowania systemów Design Patterns STRATEGY

  2. Wstęp: Strategy (strategia): - należy do tzw. behawioralnych wzorców projektowych, czyli charakteryzujących oddziaływania pomiędzy obiektami. - ma za zadanie zdefiniowanie rodziny algorytmów i rozdzielenie ich tak aby działały zależnie od potrzeb klienta

  3. Plan: • Zastosowanie • Struktura • Kosekwencje (zalety i wady) • Implementacja • Przykład kodu • Zakończenie

  4. Zastosowanie Strategię stosujemy jeśli: • Wiele powiązanych klas różni się tylko zachowaniem. • Potrzeba kilku wariantów algorytmu. • Algorytm używa danych o których klient nie powinien wiedzieć. • Klasa definiuje wiele zachowań jako wielokrotne instrukcje warunkowe.

  5. Struktura

  6. Struktura - powiązania • Klasy Strategy i Context współdziałają aby zaimplementować wybrany algorytm. • Context przekazuje żądanie klienta do odpowiedniej strategii.

  7. Konsekwencje Zalety • Strategia pozwala utworzyć rodziny powiązanych algorytmów. • Hermetyzacja algorytmów w oddzielnych klasach pozwala na ich modyfikację niezależnie od kontekstu, zwiększa czytelność, oraz łatwość rozbudowy. • Eliminuje instrukcje wyboru (warunkowe).

  8. Konsekwencje Wady • Klient musi być świadomy różnych algorytmów, aby mógł wybrać właściwy. • Nadmiarowa komunikacja pomiędzy Strategy i Context. • Zwiększona liczba obiektów.

  9. Implementacja • Interfejsy klas Context i Strategy • Strategia jako szablon • Strategia jako rozwiązanie opcjonalne

  10. Przykładowy kod 1 class Composition { private: Compositor* compositor1; Component* components1; int lineWidth; public: Composition(Compositor*); void Repair(); };

  11. Przykładowy kod 2 class Compositor { public: virtual int Compose(int lineWidth) = 0; protected: Compositor(); }; Class SimpleCompositor : public Compositor { public: SimpleCompositor(); int Compose(int lineWidth); // ... }; class TeXCompositor : public Compositor { public: TeXCompositor(); int Compose(int lineWidth); // ... };

  12. Przykładowy kod 3 void Composition::Repair () { int breakCount; breakCount = compositor1->Compose(lineWidth); } Composition* quick = new Composition(new SimpleCompositor); Composition* slick = new Composition(new TeXCompositor);

  13. Podsumowanie: • Strategia umożliwia zdefiniowanie rodziny algorytmów realizujących to samo zadanie, ale różniących się implementacją • Strategia zwiększa czytelność programu i ułatwia jego późniejszą modyfikację.

  14. Bibliografia: • Stroustrup B.: The C++ Programming Language, Addison-Wesley, 2004 • Shalloway A., Trott J.R.: Projektowanie zorientowane obiektowo. Wzorce projektowe, Helion 2002 • Gamma E., Helm R., Johnson R., Vlissides R.:Design Patterns: Elements of Reusable Object-Oriented Software

  15. Fin

More Related