• Nie Znaleziono Wyników

Obiektowe metody projektowania systemów

N/A
N/A
Protected

Academic year: 2021

Share "Obiektowe metody projektowania systemów"

Copied!
15
0
0

Pełen tekst

(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

Cytaty

Powiązane dokumenty

Ze współrzędnych barycentrycznych tego punktu wybierzmy te, które sumują się do 1 (wystarczy podzielić każdą ze współrzędnych przez ich sumę – o ile jest niezerowa) –

W systemach klasy performance management niezbędne jest również równoważenie mierników wewnętrznych z zewnętrznymi (benchmarkami), koszto- wych z niekosztownymi oraz

9) opisuje zasadę pomiaru odległości z Ziemi do Księżyca i planet opartą na paralaksie i zasadę pomiaru odległości od najbliższych gwiazd opartą na

Używając stylów Normalny, Nagłówek 1, Nagłówek 2, Nagłówek 3 i innych zawartych domyślnie w programie MS Word sformatuj tekst znajdujący się w pliku zajecia1.txt zgodnie

 Tworzenie obiektów klas produktów należących do tej samej rodziny..  Potrzeba

Adapter stanowi przykład niezwykle użyte- cznego wzorca projektowego, którego działanie polega na dostosowywaniu interfejsu istniejących już obiektów do interfejsu,

 Proces konstruowania musi zezwalać na różne reprezentacje

Na przykład użytkownik interfejsu narzędzi zawiera obiekty jako przyciski i menu, które doprowadzają żądania odzewu do użytkownika wejściowego.. Ale narzędzia nie mogą