Posty

Wyświetlam posty z etykietą solid

Jeden prosty krok do SOLIDnego kodu - Klasy final w PHP

Słowo kluczowe `final` Zastosowanie final w klasie, uniemożliwia zastosowanie dziedziczenia względem niej. Także może się wydawać że blokujemy rozszerzalność takiej klasy i zamykamy się na korzyści płynące z mechanizmu polimorfizmu. Ale czy na pewno? Moim zdaniem `final class` to wspaniałe narzędzie wspierające SOLIDa , chociaż wymaga bardzo dużo samo zaparcia i warto mieć na uwadze że SOLID to tylko zestaw reguł, które można, ale nie trzeba wykorzystywać. Zobaczmy więc co zyskujemy dzięki stosowaniu słowa `final`. Liskov Subtition Principle Zależnie od tego jak spojrzymy na tę regułę zyskujemy w obydwu przypadkach. W "oryginalnej" regule Liskov, zastosowanie `final` zablokuje możliwości dziedziczenia takiej klasy, a więc całkowicie wyeliminuje potencjalny problem niepoprawnego dziedziczenia klas bazowych , które gdzieś w środku mógłby wpłynąć na poprawność działania aplikacji. Wystarczy przypomnieć sobie przykład z kołem i elipsą. Natomiast Martin rozszerza tę regułę o konc...

Dlaczego warto stosować wzorzec dekorator

Co zyskujesz stosując wzorzec dekorator? Chciałbym podzielić się spostrzeżeniami jakie korzyści daje nam używanie wzorców, w jaki sposób wpływają na to że nasz kod jest bardziej elastyczny, spełnia zasady SOLID i paradygmatu programowania obiektowego. Jest masa wpisów gdzie zostało napisane jakie problemy dekorator rozwiązuje i jak go zaimplementować w danym języku. Tutaj będzie uniwersalniej. Dekorator spełnia założenia "kompozycja ponad dziedziczenie". Skoro już szukamy dekoratora to zapewne dziedziczenie nam się nie sprawdziło. :) Zastosowanie dekoratora zapewnia nam sporą swobodę w kwestii tego kiedy i w co chcemy dany komponent udekorować. Istnieje podejście które mówi nam o tym ze kompozycja jest lepsza od dziedziczenia właśnie z powodu elastyczności. Na pewno napisze o tym jeszcze więcej. Ponieważ jest to moim zdaniem bardzo dobre podejście w programowaniu obiektowym. Wracając do naszego dekoratora, jego zastosowanie umożliwia nam dodanie zadań do takich obi...