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

Заключение

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


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

Инкапсуляция в PHP

Инкапсуляция - это один из основных принципов объектно-ориентированного программирования (ООП), который позволяет скрыть внутреннюю реализацию объекта от...

Шаблон «Антикоррупционный слой»

Реализуйте слой фасада или адаптера между различными подсистемами, которые не разделяют одинаковую семантику. Этот слой переводит запросы, которые одна...