Refaktoryzacja kodu obiektowego
Założenie: Przekształcimy dużą klasę zawierającą wiele niezwiązanych ze sobą funkcji w kilka mniejszych, bardziej spójnych klas.
Krok po kroku:
- Krok 1: Identyfikacja problemu. Załóżmy, że mamy klasę
User
, która zarządza danymi użytkownika, wysyła emaile i generuje raporty. To zbyt wiele odpowiedzialności dla jednej klasy. - Krok 2: Wydzielenie odpowiedzialności. Podzielimy klasę
User
na trzy mniejsze:UserData
(dane użytkownika),EmailSender
(wysyłanie emaili) iReportGenerator
(generowanie raportów). - Krok 3: Implementacja nowych klas.
- Krok 4: Użycie nowych klas. Klasa
User
może teraz korzystać z tych mniejszych klas, delegując zadania.
id = $id;
$this->name = $name;
$this->email = $email;
}
}
class EmailSender {
public function sendEmail(UserData $user, $subject, $message) {
// Logika wysyłania emaila
echo "Email sent to: " . $user->email . "\n";
}
}
class ReportGenerator {
public function generateReport(UserData $user) {
// Logika generowania raportu
echo "Report generated for: " . $user->name . "\n";
}
}
$userData = new UserData(1, "Jan Kowalski", "jan.kowalski@example.com");
$emailSender = new EmailSender();
$reportGenerator = new ReportGenerator();
$emailSender->sendEmail($userData, "Witaj!", "Witamy w naszym systemie!");
$reportGenerator->generateReport($userData);
?>
Ten przykład pokazuje podstawy refaktoryzacji kodu obiektowego. Dalsza nauka obejmuje poznanie wzorców projektowych i zasad SOLID, które pomogą w tworzeniu bardziej elastycznego i łatwego w utrzymaniu kodu.