Krótko o złożonych wzorcach z rodziny Model-View

Posted by Przemysław Owsianik on 2021-09-02
<p>Członków rodziny Model-View zalicza się do&nbsp;wzorców architektonicznych, jak i do&nbsp;wzorców projektowych. Dlaczego? Ponieważ w pewnym stopniu dyktują sposób budowy architektury systemu, a z drugiej strony wpływają &nbsp;(pozostawiając jednak dużo swobody) na rozwiązania na poziomie kodu.</p> <p>Wzorce złożone, jak sama nazwa wskazuje, są zwykle zbiorem kilku wzorców projektowych zaprzęgniętych do wspólnej pracy, ku wyższemu dobru. Owym dobrem najczęściej jest osiągnięcie luźniejszych powiązań(loose coupling), wyegzekwowanie&nbsp;prawa Demeter&nbsp;i &nbsp;przede wszystkim pisanie&nbsp;SOLIDnego&nbsp;kodu. Konsekwencją korzystania ze wzorców złożonych jest&nbsp;separacja&nbsp;zagadnień&nbsp;i&nbsp;warstwowa budowa aplikacji(tu mamy wspomniany wpływ na budowę architektury) a tym samym jej&nbsp;testowalność. Oczywiście należy pamiętać, że używanie (tudzież próby używania) wzorców złożonych nie są równoznaczne z pisaniem dobrego kodu (przy odrobinie chęci można przecież, bez trudności, wszystko popsuć :))</p> <p>Do rodziny Model-View zalicza się trzy (a przynajmniej o tylu mi wiadomo :)) wzorce:</p> <ul> <li> MVC– Model-View-Controler</li> <li>MVP – Model-View-Presenter</li> <li>MVVM&nbsp;– Model-View-ViewModel</li> </ul> <p>Jak można wydedukować (no sh*t Sherlock&nbsp;;)) wszystkie dostarczają pewnego rodzaju rozwiązania dotyczącego interfejsu użytkownika, a właściwie sposobu komunikacji między nim a „resztą” programu.</p> <p>Są to rozwiązania na tyle popularne, że wiele osób nie znając (świadomie) podstawowych wzorców projektowych takich jak kompozyt, strategia czy obserwator, chętnie (i sprawnie) wykorzystują do pracy MVC :). Nie jest to jednak dziwne skoro wzorce z omawianej rodziny są implementowane w dziesiątkach frameworków, tak dla rozwiązań lokalnych jak i sieciowych. ASP.NET MVC, Spring Framework, czy AngularJs to przykłady dla MVC. WinForms, czy JavaFx dla MVP, a WindowsPresentationFoundation dla MVVM (który został stworzony właśnie na potrzeby WPF).</p> <p>W kilku bliższych lub dalszych postach opiszę każdy z wspomnianych wzorców.</p>