Danyloff

Информационный эксперт из GRASP с примерами на PHP


  • ·

· ·

Информационный эксперт — это концепция объектно-ориентированного проектирования, которая позволяет разграничить ответственности между объектами в системе. В рамках этой концепции каждый объект в системе должен обладать информацией только о своих внутренних состояниях и выполнении своих функций. Дополнительно, объект не должен иметь доступа к информации других объектов, кроме тех случаев, когда это является необходимым для корректного выполнения своих задач.

GRASP (General Responsibility Assignment Software Patterns) предоставляет набор паттернов проектирования, включая информационного эксперта. Этот паттерн часто используется при проектировании веб-приложений на PHP.

Рассмотрим пример применения информационного эксперта на PHP. Представим, что у нас есть веб-сайт для онлайн-магазина. Необходимо создать класс, который будет отвечать за добавление новых товаров в базу данных. В этом случае класс, выполняющий эту задачу, будет выступать в роли информационного эксперта.

В качестве первого шага нужно определить свойства класса, которые будут использоваться для хранения информации о новом товаре. Для нашего класса это могут быть свойства, такие как название товара, описание, цена, категория и т.д.

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

Рассмотрим код на PHP, реализующий описанный выше пример

class Product {
   private $name;
   private $description;
   private $price;
   private $category;
   
   public function setName($name) {
      $this->name = $name;
   }
   
   public function setDescription($description) {
      $this->description = $description;
   }
   
   public function setPrice($price) {
      $this->price = $price;
   }
   
   public function setCategory($category) {
      $this->category = $category;
   }
   
   public function addProduct() {
      // код для добавления нового товара в базу данных
   }
}

В примере выше мы создали класс Product, который содержит свойства, отвечающие за название товара, описание, цену и категорию. Методы класса позволяют задавать значения свойств и добавлять новый товар в базу данных.

Заключение

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


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

Согласование Laravel и DDD (часть 2)

В предыдущей статье мы пришли к выводу, что при реализации DDD с помощью Laravel, сам фреймворк должен стать нашей новой парадигмой программирования, чтобы...