Wzorce projektowe
Koziołek
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 publikacjach[#]_ [#]_ 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)[#]_. 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
.. [#] Alexander, C., The Timeless Way of Building, Oxford University Press 1979
.. [#] Alexander C., Sara Ishikawa, Murray Silverstein, The Pattern Language: Towns, Buildings, Construction, Oxford University Press 1977
.. [#] Gamma E., Helm R., Johnson R., Vlissides J., Design Patterns: Elements of Reusable Object-Oriented Software, Addison Wesley 1997, ISBN 83-204-3041-0
Wierzę jednak, że ktoś ma pojęcie o rekursji ogonowej, która już taka zła nie jest.
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ą... :]
niekoniecznie. to jest świetny przykład na porównanie rekurencji i pętli. To że później nie nalezy stosować to inna sprawa.
Antywzorzec to będzie chyba nauczany w szkołach i na uczelniach rekurencyjny algorytm liczenia silni ;]