Obiektowe metody projektowania systemów

15
Obiektowe metody projektowania systemów Design Patterns STRATEGY

description

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. - PowerPoint PPT Presentation

Transcript of Obiektowe metody projektowania systemów

Page 1: Obiektowe metody projektowania systemów

Obiektowe metody projektowania systemów

Design Patterns

STRATEGY

Page 2: Obiektowe metody projektowania systemów

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

Page 3: Obiektowe metody projektowania systemów

Plan:

• Zastosowanie

• Struktura

• Kosekwencje (zalety i wady)

• Implementacja

• Przykład kodu

• Zakończenie

Page 4: Obiektowe metody projektowania systemów

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.

Page 5: Obiektowe metody projektowania systemów

Struktura

Page 6: Obiektowe metody projektowania systemów

Struktura - powiązania

Klasy Strategy i Context współdziałają aby zaimplementować wybrany algorytm.

Context przekazuje żądanie klienta do odpowiedniej strategii.

Page 7: Obiektowe metody projektowania systemów

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).

Page 8: Obiektowe metody projektowania systemów

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.

Page 9: Obiektowe metody projektowania systemów

Implementacja

Interfejsy klas Context i Strategy Strategia jako szablon Strategia jako rozwiązanie

opcjonalne

Page 10: Obiektowe metody projektowania systemów

Przykładowy kod 1

class Composition {

private:

Compositor* compositor1;

Component* components1;

int lineWidth;

public:

Composition(Compositor*);

void Repair();

};

Page 11: Obiektowe metody projektowania systemów

Przykładowy kod 2class 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);// ...

};

Page 12: Obiektowe metody projektowania systemów

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);

Page 13: Obiektowe metody projektowania systemów

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ę.

Page 14: Obiektowe metody projektowania systemów

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

Page 15: Obiektowe metody projektowania systemów

Fin