Inżynieria oprogramowania

Wzorce projektowe

  • 2011-09-07 15:58
  • 4 komentarze
  • 5999 odsłon
  • Oceń ten tekst jako pierwszy
Wzorce Projektowe (DP - ang. Design Patterns) stanowią grupę sprawdzonych w praktyce, uniwersalnych i skutecznych sposobów rozwiązania często pojawiających się problemów.

Historia


Koncepcja wzorca wywodzi się z architektury. Zrodziła się w połowie lat siedemdziesiątych XX wieku w pracach amerykańskiego architekta Christophera Alexandera. Pokazał on w swoich publikacjach1  2 sposoby rozwiązania często pojawiających się problemów projektowych. Zauważył on, że istnieje bardzo duża grupa problemów, z którymi spotykamy się w każdym projekcie. Chcąc przyspieszyć prace nad projektem zaproponował on stworzenie katalogu standardowych, uniwersalnych i dobrych rozwiązań. Czyli właśnie wzorców projektowych.
W inżynierii oprogramowania wzorce zostały wprowadzone w książce Design Patterns autorstwa E. Gammy, R. Helma, R. Johnsona i J.Vlissidesa (zwanych zwykle "bandą czworga" - ang. Gang of Four)3. Przedstawili oni zestaw rozwiązań, wzorców, popularnych problemów pojawiających się w programowaniu (całość w Smalltalk). Zaproponowali też podział wzorców na grupy, ale obecnie jest kilka różnych sposobów podziału wzorców.

Antywzorce


Wraz z rozwojem wzorców powstało też pojęcie antywzorca, czyli rozwiązania "najgorszego z możliwych". Antywzorce są zazwyczaj wynikiem niewiedzy, a co za tym idzie "wymyślania koła na nowo". Do dobrych praktyk należy unikanie antywzorców.

Uwagi


Chcąc zachować porządek w tematach należy opisywać zworce według pewnego szablonu.

  • Nazwa wzorca i/lub inne nazwy
  • Klasyfikację według GoF i/lub innej metodyki
  • Schemat UML
  • Stosowalność - opis problemu
  • Opis implementacji
  • Koszty i problemy
  • Powiązane wzorce
  • Przykłady implementacji w różnych językach

Linki



Przypisy



[1] Alexander, C., The Timeless Way of Building, Oxford University Press 1979
[2] Alexander C., Sara Ishikawa, Murray Silverstein, The Pattern Language: Towns, Buildings, Construction, Oxford University Press 1977
[3] Gamma E., Helm R., Johnson R., Vlissides J., Design Patterns: Elements of Reusable Object-Oriented Software, Addison Wesley 1997, ISBN 83-204-3041-0

</font>
  1. Kafelki
  2. Lista

Singleton

NULL Object

Łańcuch konstruktorów

4 komentarze

shusty 2012-04-11 00:01

Wierzę jednak, że ktoś ma pojęcie o rekursji ogonowej, która już taka zła nie jest.

BoZzDoG 2011-09-08 18:27

chyba, że uczą tego po to, by pokazać, że dany problem można rozwiązać na kilka sposobów. No i wyciągnąć wnioski, który jest szybszy. Ogólnie to głupota z tą silnią, algorytm liczący silnię ma dwie linie kodu, więc po co się bawić z rekurencją...? Ciekawie dziś nauczają... :]

Koziołek 2007-10-30 15:12

niekoniecznie. to jest świetny przykład na porównanie rekurencji i pętli. To że później nie nalezy stosować to inna sprawa.

Marooned 2007-10-30 14:30

Antywzorzec to będzie chyba nauczany w szkołach i na uczelniach rekurencyjny algorytm liczenia silni ;]