09 – Wzorce projektowe w języku C# – #DSP2017

W programowaniu jak i w życiu codziennym spotykamy się często z takimi samymi, ciągle powtarzającymi się czynnościami oraz zabiegami do których się przyzwyczajamy i powtarzamy je prawie automatycznie. Skoro nauczyliśmy się że np aby włączyć silnik w samochodzie trzeba przekręcić kluczyk lub nacisnąć przycisk to już tę zawsze pamiętamy i wykonujemy "bez mrugnięcia okiem".

Programiści opracowali do często powtarzających się czynności uniwersalne rozwiązania, które nazywają się wzorcami projektowymi. Ułatwiają one tworzenie oprogramowania oraz dbanie o kod.

 

 

Wzorce projektowe można podzielić na trzy główne kategorie:
wzorce kreacyjne (creational patterns) które opisują tworzenie nowych obiektów klasy,
- wzorce strukturalne (structural patterns) odpowiedzialne za opisanie budowy powiązań między obiektami,
- wzorce czynnościowe (beharovial patterns) które opisują zachowanie obiektów jakie ze sobą współpracują.

 

 

 

 

Wzorce kreacyjne:

  • Budowniczy (builder) -> tworzenie obiektu podzielone jest na kilka mniejszych etapów gdzie                                                 każdy z tych etapów może być implementowany na różne sposoby.
  • Fabryka abstrakcyjna (abstract factory) -> dostarczenie interfejsu do tworzenia różnych                                                         obiektów jednego typu bez specyfikowania ich konkretnych klas.
  • Metoda wytwórcza (factory method) -> dostarczenie interfejsu do tworzenia obiektów                                                              nieokreślonych jako powiązanych typów.
  • Prototyp (prototype) ->   umożliwienie tworzenia obiektów danej klasy lub klas z                                                                       wykorzystaniem już istniejącego obiektu, zwanego prototypem.
  • Singleton (singleton) ->  ograniczenie możliwości tworzenia obiektów danej klasy do jednej                                                    instancji oraz zapewnienie globalnego dostępu do stworzonego obiektu.

 

Wzorce strukturalne:

  • Adapter (adapter) -> umożliwienie współpracy dwóch klas o niekompatybilnych interfejsach
  • Dekorator (decorator) -> dodanie nowej funkcji do istniejących klas dynamicznie podczas działania programu
  • Fasada (facade) -> ujednolicenia dostępu do złożonego systemu poprzez wystawienie uproszczonego, uporządkowanego interfejsu programistycznego
  • Kompozyt (composite) -> składanie obiektów w taki sposób, aby klient widział wiele z nich jako pojedynczy obiekt
  • Most (bridge) -> oddzielenie abstrakcji obiektu od jego implementacji
  • Pełnomocnik (proxy) -> utworzenie obiektu zastępującego inny obiekt
  • Pyłek (flyweight) ->  zmniejszenie wykorzystania pamięci poprzez poprawę efektywności obsługi dużych obiektów zbudowanych z wielu mniejszych elementów poprzez współdzielenie wspólnych małych elementów

 

Wzorce czynnościowe:

  • Interpreter (interpreter) -> definiuje opis gramatyki pewnego języka interpretowanego, a także tworzy dla niej interpretera, dzięki któremu będzie możliwe rozwiązanie opisanego problemu
  • Iterator (iterator) -> zapewnienie sekwencyjnego dostępu do podobiektów zgrupowanych w większym obiekcie
  • Łańcuch zobowiązań (chain of responsibility) -> żądanie może być przetwarzane przez różne obiekty, w zależności od jego typu.
  • Mediator (mediator) -> zapewnienie jednolitego interfejsu dla różnych elementów danego podsystemu
  • Metoda szablonowa (template method) -> zdefiniowanie metody która jest szkieletem algorytmu
  • Obserwator (observer) -> powiadamianie zainteresowanych obiektów o zmianie stanu innego obiektu.
  • Odwiedzający (visitor)->  odseparowanie algorytmu od struktury obiektowej na której operuje
  • Pamiątka (memento) -> zapamiętanie i udostępnienie na zewnątrz wewnętrznego stanu obiektu bez naruszania hermetyzacj
  • Polecenie (command) ->  traktuje żądanie wykonania określonej czynności jako obiekt, dzięki czemu mogą być one parametryzowane w zależności od rodzaju odbiorcy, a także umieszczane w kolejkach i dziennikach
  • Stan (state) -> umożliwia zmianę zachowania obiektu poprzez zmianę jego stanu wewnętrznego
  • Strategia (strategy) -> definiuje rodzinę wymiennych algorytmów i kapsułkuje je w postaci klas

 

 

 

 

Zapraszam serdecznie do śledzenia mnie na:
Twitter
Github - piotrowinka2410

Instagram
Snapchat - piotrowinka2410
Fanpage na Facebooku 

 

5 thoughts on “09 – Wzorce projektowe w języku C# – #DSP2017

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *