algorytm.org

Strategia (strategy)



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Strategia (strategy)
Ocena użytkowników:***** / 22
SłabyŚwietny 
Wpisany przez Kamil Dworak, 04 sierpnia 2010 14:36

Strategia (ang. Strategy) jest czynnościowym wzorcem projektowym, będącym tak naprawdę pewną rodziną algorytmów. Algorytmy te upakowane są w oddzielne, w pełni wymienne (w trakcie działania programu) klasy. Na samej górze znajduje się klasa kontekstowa, wybierająca, który algorytm (ale tylko jeden!) będzie wykonywany. Dodawanie nowych algorytmów sprowadza się do stworzenia nowej klasy implementującej dany interfejs. Modyfikacja algorytmu to tylko modyfikacja odpowiedniej klasy. Mamy tutaj odseparowanie wyboru algorytmu od jego implementacji (sam klient nawet nie wie jak zbudowana jest dana strategia). Często występuje z wzorcem fabryki.

Uogólniony diagram wzorca:


Strategia



Diagram odpowiadający załączonemu przykładowi:


strategia - przykład

  • Użytkownik podaje nazwę zawodu.
  • Nazwa ta przekazywana jest do klasy kontekstowej za sprawą konstruktora.
  • W kontekście mamy trzy prywatne zmienne, odpowiednio od dostępnych interfejsów. Na podstawie przekazanego łańcucha wybieramy jedną, najbardziej odpowiadającą ścieżkę.
  • Dla każdej zmiennej wywoływany jest konstruktor, który definiuje każdą z nich, jako odpowiedni algorytm. Dzięki temu zmienne otrzymują dostęp do wszystkich metod klas.
  • Kolejno odpalamy metody. Rezultaty widoczne na ekranie.

 




Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Kamil DworakC#Visual Studio 2008
.cs
.cs
***** / 5
Kamil DworakC/C++Visual Studio 2008
.cpp
.cpp
***** / 3
Kamil DworakJava
.java
.java
***** / 18
MarekPhpPHPStorm 9
.php
.php
***** / 2
Marcin ProkopRuby
.rb
.rb
***** / 1
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język
programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie

Poprawiony: 04 sierpnia 2010 14:47
Dodaj komentarz