Junior — Middle
Кой дизайн модел е най-добрият за прилагане при създаване на обект, като се вземат предвид различните условия на внедряване?
sobes.tech AI
Отговор от AI
За създаване на обект с различни условия на внедряване е най-добре да използвате шаблона за проектиране "Фабрика" (Factory) или "Абстрактна фабрика" (Abstract Factory).
Този шаблон позволява да се капсулира логиката за създаване на обекти и да се избира конкретен клас за създаване в зависимост от условията по време на изпълнение.
Пример за прост фабричен метод:
interface LoggerInterface {
public function log(string $message);
}
class FileLogger implements LoggerInterface {
public function log(string $message) {
// запис във файл
}
}
class DatabaseLogger implements LoggerInterface {
public function log(string $message) {
// запис в база данни
}
}
class LoggerFactory {
public static function create(string $type): LoggerInterface {
if ($type === 'file') {
return new FileLogger();
} elseif ($type === 'db') {
return new DatabaseLogger();
}
throw new Exception('Неизвестен тип логер');
}
}
$logger = LoggerFactory::create('file');
$logger->log('Съобщение');
По този начин можете гъвкаво да създавате обекти в зависимост от условията.