Danyloff

Чистая выдумка из 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 и сохраняется в базе данных. Затем происходит перенаправление пользователя на страницу с информацией о товаре.

Заключение

Использование паттерна «Чистая выдумка» может значительно упростить процесс разработки и уменьшить количество кода, необходимого для выполнения определенных функций в системе. Однако при выборе этого паттерна необходимо анализировать требования к системе, чтобы выбрать подходящий под них паттерн.


Так же интересно

Entity по Эвансу

Entity - это один из ключевых концептов в DDD, который представляет собой объект, который имеет уникальную идентичность и может изменять свое состояние. Entity...