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.