Organizacja kodu i wzorce projektowe


1. Moduły i pakiety w projektach OOP

1.1 Moduły

  • Moduł to pojedynczy plik .py, który zawiera kod Pythona – klasy, funkcje, zmienne.
  • Ułatwia organizację kodu, jego wielokrotne użycie i czytelność.

Przykład tworzenia modułu:

Plik zwierzeta.py:

W innym pliku możemy go użyć:


1.2 Pakiety

  • Pakiet to folder zawierający moduły Pythona oraz specjalny plik __init__.py.
  • Pozwala grupować powiązane moduły w większą strukturę.
  • Ułatwia tworzenie rozbudowanych projektów OOP.

Przykład struktury pakietu:

projekt/
│
├── zwierzeta/
│   ├── __init__.py
│   ├── pies.py
│   └── kot.py
│
└── main.py

Plik main.py:

Zalety modułów i pakietów:

  • Kod jest bardziej czytelny i uporządkowany
  • Łatwo go wielokrotnie używać
  • Ułatwia zarządzanie dużymi projektami OOP

2. Wzorce projektowe w Pythonie (podstawowe)

2.1 Singleton

  • Zapewnia, że klasa będzie miała tylko jedną instancję w całym programie.
  • Przydatne np. do konfiguracji, logowania czy połączeń z bazą danych.

Przykład w Pythonie:


2.2 Fabryka (Factory)

  • Pozwala tworzyć obiekty bez konieczności bezpośredniego wywoływania konstruktora klasy.
  • Ułatwia zmianę typu tworzonego obiektu w jednym miejscu, bez modyfikacji reszty kodu.

Przykład fabryki:


2.3 Strategia (Strategy)

  • Pozwala zmieniać algorytm działania obiektu w czasie działania programu bez zmiany jego kodu.
  • Klasa główna deleguje zadanie do strategii, która implementuje określone zachowanie.

Przykład strategii:

Zaleta wzorców:

  • Ułatwiają tworzenie elastycznych i łatwych do rozbudowy projektów.
  • Pozwalają oddzielić implementację od interfejsu i ponownie używać kodu.

3. Podsumowanie

  • Moduły i pakiety pozwalają podzielić projekt OOP na pliki i foldery, poprawiając czytelność i wielokrotne użycie kodu.
  • Wzorce projektowe to sprawdzone sposoby rozwiązywania typowych problemów w projektach:

    • Singleton → jedna instancja klasy,
    • Fabryka → elastyczne tworzenie obiektów,
    • Strategia → zmiana zachowania obiektu w locie.
  • Te techniki pozwalają budować skalowalne, modularne i łatwe w utrzymaniu aplikacje Python OOP.