s
Принцип единственной обязанности (ответственности)(Single responsibility principle).
Этот принцип первый в списке принципов SOLID. Обозначает, что любой объект должен иметь лишь одну обязанность и эта обязанность должна быть полностью реализована в классе объекта (инкапсулирована).
Из этого следует что должна быть одна причина чтобы вносить изменения в объект.
Пример
index.php
$product = new Product(); $product->setPrice(10);
product.php
class Product {
public function setPrice($price) {
try {
// save price in db
} catch (DbException $e) {
$this->logError($e->getMessage());
}
}
public function logError($error) {
// save error message
}
}
Класс Product нарушает принцип единственной ответственности, так как он имеет две ответственности:
- Работа с продуктом
- Логирование ошибок
logger.php
class Logger {
public function log($message) {
//...
$this->saveToFile($message);
}
}
Теперь изменим файл index.php:
index.php
$logger = new Logger(); $product = new Product($logger); $product->setPrice(10);
Изменим класс Product:
product.php
class Product {
private $logger;
public function __construct(Logger $logger) {
$this->logger = $logger;
}
public function setPrice($price) {
try {
// save price in db
} catch (DbException $e) {
$this->logger->log($e->getMessage());
}
}
}
s.txt · Last modified: 2023/09/14 06:06 by 127.0.0.1