Danyloff

Создатель из GRASP с примерами на PHP


  • ·

· ·

Создатель (Creator) — это паттерн проектирования, который относится к GRASP (General Responsibility Assignment Software Patterns). Основная идея этого паттерна заключается в том, чтобы переложить ответственность за создание объектов на отдельный класс. Таким образом, мы можем сфокусировать ответственность разных объектов на различных классах, что делает систему более гибкой и масштабируемой.

Одним из наиболее распространенных примеров использования Создателя является создание объектов-конкретных продуктов в зависимости от условий или параметров, передаваемых в метод фабрики объектов.

Приведу пример, который показывает, как использовать паттерн Создатель в PHP. Представим, что у нас есть класс Product, который представляет собой товар в интернет-магазине. У каждого товара может быть свой набор свойств, таких как имя, цена, описание, размер и т.д. Мы хотим создать новый товар, и нам нужно выбрать, какие свойства он будет иметь. Для этой задачи мы можем использовать фабрику объектов, которая будет создавать новые товары в зависимости от переданных параметров.

Код для реализации этой задачи на PHP может выглядеть примерно так

class Product {
    private $name;
    private $description;
    private $price;
    private $size;
    
    public function setName($name) {
        $this->name = $name;
    }
    
    public function setDescription($description) {
        $this->description = $description;
    }
    
    public function setPrice($price) {
        $this->price = $price;
    }
    
    public function setSize($size) {
        $this->size = $size;
    }
}

class ProductFactory {
    public static function createProduct($name, $description, $price, $size) {
        $product = new Product();
        
        $product->setName($name);
        $product->setDescription($description);
        $product->setPrice($price);
        $product->setSize($size);
        
        return $product;
    }
}

В примере выше мы создали класс Product, который представляет товар в интернет-магазине. Затем мы создали класс ProductFactory, который является фабрикой объектов и отвечает за создание новых товаров. Метод createProduct этого класса получает параметры товара и возвращает экземпляр класса Product с заданными свойствами.

Заключение

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


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

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

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