Junior — Middle
Opisz swoje doświadczenie w implementacji wzorców projektowych z użyciem abstrakcyjnych interfejsów i koncepcji.
sobes.tech AI
Odpowiedź od AI
W moim doświadczeniu z PHP często korzystałem z wzorców projektowych opartych na abstrakcyjnych interfejsach i koncepcjach, aby zwiększyć elastyczność i rozszerzalność kodu. Na przykład, podczas implementacji wzorca "Fabryka" (Factory), tworzyłem interfejs dla produktów, a konkretne klasy implementowały ten interfejs. Abstrakcyjny interfejs pozwalał kodowi klienta pracować z produktami bez znajomości ich konkretnych klas.
Przykład:
interface LoggerInterface {
public function log(string $message);
}
class FileLogger implements LoggerInterface {
public function log(string $message) {
// zapis do pliku
}
}
class DatabaseLogger implements LoggerInterface {
public function log(string $message) {
// zapis do bazy danych
}
}
function process(LoggerInterface $logger) {
$logger->log('Rozpoczęcie procesu');
}
// Łatwo można zmienić implementację loggera bez zmiany funkcji process
process(new FileLogger());
Takie podejście pozwala na łatwe wprowadzanie nowych implementacji, testowanie kodu i przestrzeganie zasad SOLID, szczególnie odwrócenia zależności i otwartego/zamkniętego.