Чистая выдумка из GRASP с примерами на PHP
- ·
-
Чистая выдумка (Pure Fabrication) — это паттерн проектирования, который относится к GRASP (General Responsibility Assignment Software Patterns). Его основная идея заключается в том, чтобы создавать объекты, не имеющие никакого связи с реальным миром, но необходимых для выполнения определенных функций в системе.
Этот паттерн может быть применен в случаях, когда невозможно связать новый объект с каким-либо конкретным объектом в системе или когда другие объекты не выполняют необходимую функцию.
Пример использования «Чистой выдумки» на PHP может выглядеть так
class ProductValidator {
public function validate($data) {
// Проверяем корректность данных
if (empty($data['name']) || empty($data['price'])) {
return false;
}
else {
return true;
}
}
}
class ProductController {
private $productModel;
private $validator;
public function __construct($productModel, $validator) {
$this->productModel = $productModel;
$this->validator = $validator;
}
public function addProduct($data) {
// Проверяем корректность данных
if (!$this->validator->validate($data)) {
// Обрабатываем ошибки и выводим сообщение об ошибке
$errorMsg = 'Invalid data.';
include('product-form.php');
return;
}
// Создаем новый объект Product на основе данных формы и сохраняем его
$product = new Product($data);
$this->productModel->save($product);
// Перенаправляем пользователя на страницу с информацией о товаре
header('Location: product.php?id=' . $product->getId());
exit();
}
}
В примере выше мы создали класс ProductValidator, который отвечает за проверку корректности данных, введенных пользователем при добавлении нового товара. Класс определяет метод validate, который возвращает true или false, в зависимости от правильности ввода данных.
Затем мы создали класс ProductController, который обрабатывает запросы пользователя, связанные с товарами в интернет-магазине. Контроллер принимает модель ProductModel и валидатор ProductValidator в качестве параметров конструктора.
Метод addProduct Контроллера проверяет корректность данных, используя метод validate объекта ProductValidator. Если данные некорректны, то обрабатывается ошибка и выводится сообщение об ошибке. Если данные корректны, то создается новый объект Product и сохраняется в базе данных. Затем происходит перенаправление пользователя на страницу с информацией о товаре.
Заключение
Использование паттерна «Чистая выдумка» может значительно упростить процесс разработки и уменьшить количество кода, необходимого для выполнения определенных функций в системе. Однако при выборе этого паттерна необходимо анализировать требования к системе, чтобы выбрать подходящий под них паттерн.