back-end

SOLID: Dependency Inversion Principle (Zasada odwracania zależności)

Wprowadzenie W dzisiejszym artykule wyjaśnię koncepcję zasady odwracania zależności, która reprezentuje literę “D” w akronimie 5 zasad SOLID. Na wstępie przyjrzymy się definicji zasady, a nastepnie zostanie ona omówiona na przykładzie. DIP – Dependency Inversion Principle (Zasada odwracania zależności) “Moduły wysokiego poziomu nie powinny zależeć od modułów niskiego poziomu. Oba powinny zależeć od abstrakcji.” Definicja …

SOLID: Dependency Inversion Principle (Zasada odwracania zależności) Read More »

SOLID: Interface Segregation Principle (Zasada segregowania interfejsów)

Wprowadzenie W poprzednim artykule pisałam o zasadzie podstawiania Liskov. Kolejną z zasad SOLID jest segregacja interfejsów opracowana przez Roberta C. Martina, który pracował wtedy w firmie Xerox. Podczas opracowywania nowego systemu, Martin zauważył, że drobne zmiany w projekcie powodowały konieczność modyfikacji na dużą skalę miejsc w kodzie, które wychodziły poza zakres zmian – spowodowane to …

SOLID: Interface Segregation Principle (Zasada segregowania interfejsów) Read More »

SOLID: Liskov Substitution Principle (Zasada podstawiania Liskov)

Wprowadzenie W poniższym artykule przedstawię trzecią z zasad SOLID – zasadę podstawiania Liskov. Jest to jedna z cięższych do zrozumienia zasad, dlatego oprócz teorii w artykule znajdziesz również przykład jej zastosowania.Nazwa zasady pochodzi od nazwiska jej autorki, amerykańskiej programistki Barbary Liskov. LSP – Liskov Substitution Principle (Zasada podstawiania Liskov) “Funkcje, które używają wskaźników lub referencji …

SOLID: Liskov Substitution Principle (Zasada podstawiania Liskov) Read More »

SOLID: Open/Closed Principle (Zasada otwarte – zamknięte)

Wprowadzenie W poniższym artykule przedstawię drugą z zasad SOLID wraz z przykładem jej zastosowania. OCP – Open/Closed Principle (Zasada otwarte – zamknięte) “Komponenty oprogramowania powinny być otwarte na rozbudowę, ale zamknięte na modyfikacje. Zasada OCP mówi nam o tym, że klasy aplikacji powinny być projektowane w taki sposób aby możliwe było dodawanie nowych funkcjonalności, bez …

SOLID: Open/Closed Principle (Zasada otwarte – zamknięte) Read More »

SOLID: Single-Responsibility Principle (Zasada pojedynczej odpowiedzialności)

SOLID, czyli 5 zasad projektowania obiektowego Wprowadzenie W programowaniu obiektowym klasy są elementami składowymi każdej aplikacji. Jeśli te bloki nie są “solidne” to cała nasza aplikacja może w przyszłości zmagać się z wieloma problemami – zarówno w fazie deweloperskiej jak i produkcyjnej.Zestaw dobrze zaprojektowanych klas może bardzo przyspieszyć proces kodowania aplikacji, jednocześnie zmniejszając prawdopodobieństwo występowania …

SOLID: Single-Responsibility Principle (Zasada pojedynczej odpowiedzialności) Read More »

Testy jednostkowe: Technika TDD (Test-Driven Development)

TDD, czyli Test-Driven Development TDD (ang. Test-Driven Development) jest techniką tworzenia oprogramowania, w której główną zasadą jest w pierwszej kolejności pisanie testów do nieistniejącej funkcjonalności, a następnie jej zaimplementowanie.Tworząc oprogramowanie zgodnie z techniką TDD testy piszemy zawsze przed implementacją.Podejście TDD składa się z trzech faz, które łączą się w jeden cykl – cały proces tworzenia …

Testy jednostkowe: Technika TDD (Test-Driven Development) Read More »

Wzorce Projektowe: Fabryka Abstrakcyjna (Abstract Factory)

Definicja Fabryka abstrakcyjna jest kreacyjnym wzorcem projektowym, który pozwala tworzyć rodziny powiązanych ze sobą obiektów bez definiowania ich konkretnych klas. Wzorzec ten jest bardzo podobnych do wzorca metody fabrykującej,  a jego implementacja skupia się na super-klasie, która tworzy inne fabryki. Przykład zastosowania wzorca Fabryki Abstrakcyjnej Załóżmy, że chcemy zbudować globalną fabrykę rowerów. Moglibyśmy użyć do tego …

Wzorce Projektowe: Fabryka Abstrakcyjna (Abstract Factory) Read More »

Wzorce Projektowe: Metoda Fabrykująca (Factory Method)

Definicja Metoda fabrykująca (wytwórcza) jest kreacyjnym wzorcem projektowym, który pozwala na tworzenie obiektów bez określania ich konkretnych klas – definiowany zostaje interfejs, który umożliwia tworzenie obiektów, jednak odpowiedzialność za ten proces przekazuje do klas podrzędnych (to właśnie klasa podrzędna decyduje jaki obiekt zostanie utworzony!). Przykład zastosowania wzorca Metoda Fabryczna Stwórzmy aplikację, oferującą usługę wysyłania powiadomień (ostrzeżeń …

Wzorce Projektowe: Metoda Fabrykująca (Factory Method) Read More »

Wzorce Projektowe: Strategia (Strategy)

Definicja Strategia to behawioralny (czynnościowy) wzorzec projektowy, przekształcający zestaw algorytmów definiujących konkretne zachowania w obiekty, które można następnie zamiennie stosować w pierwotnym obiekcie – pozwala na pakowanie całych rodzin algorytmów w indywidualne zestawy oraz dynamiczną zmianę zachowań obiektów w trakcie działania programu. Przykład zastosowania wzorca Strategia Zagłębmy się w kod, aby zrozumieć co tak naprawdę znaczy …

Wzorce Projektowe: Strategia (Strategy) Read More »

Wzorce Projektowe: Budowniczy (Builder)

Definicja Budowniczy to wzorzec konstrukcyjny, który oddziela proces tworzenia obiektu od jego reprezentacji – sam sposób tworzenia obiektów jest wydzielony do osobnych obiektów zwanych Konkretnymi Budowniczymi Kiedy używamy wzorca Budowniczy? Wzorzec budowniczy stosujemy najczęściej w przypadku potrzeby utworzenia złożonego obiektu (tzw. kompozytu). Złożony obiekt może wymuszać stworzenie klasy, posiadającej zbyt wiele odpowiedzialności, co łamie pierwszą …

Wzorce Projektowe: Budowniczy (Builder) Read More »