Junior — Middle
Опишите своје искуство у имплементацији образаца дизајна коришћењем апстрактних интерфејса и концепата.
sobes.tech АИ
Одговор од АИ
U mom iskustvu sa PHP-jem često sam koristio obrasce dizajna zasnovane na apstraktnim interfejsima i konceptima za poboljšanje fleksibilnosti i proširivosti koda. Na primer, pri implementaciji obrasca "Fabrika" (Factory), pravio sam interfejs za proizvode, a konkretne klase su implementirale taj interfejs. Apstraktni interfejs je omogućavao klijentskom kodu da radi sa proizvodima bez poznavanja njihovih konkretnih klasa.
Primer:
interface LoggerInterface {
public function log(string $message);
}
class FileLogger implements LoggerInterface {
public function log(string $message) {
// zapis u fajl
}
}
class DatabaseLogger implements LoggerInterface {
public function log(string $message) {
// zapis u bazu podataka
}
}
function process(LoggerInterface $logger) {
$logger->log('Početak procesa');
}
// Lako je menjati implementaciju loggera bez promene funkcije process
process(new FileLogger());
Ovaj pristup omogućava lako dodavanje novih implementacija, testiranje koda i poštovanje SOLID principa, posebno Inversion of Control i Open/Closed principa.