Danyloff

Шаблон Identity Map с примерами на PHP


  • ·

· ·

Шаблон Identity Map — это паттерн проектирования, который используется для управления объектами в памяти приложения. Он позволяет избежать повторного создания объектов, которые уже существуют в памяти, и обеспечивает единообразный доступ к этим объектам.

Пример использования шаблона Identity Map на PHP

class User {
    private $id;
    private $name;
    private $email;

    public function __construct($id, $name, $email) {
        $this->id = $id;
        $this->name = $name;
        $this->email = $email;
    }

    public function getId() {
        return $this->id;
    }

    public function getName() {
        return $this->name;
    }

    public function getEmail() {
        return $this->email;
    }
}

class UserMapper {
    private $db;
    private $identityMap;

    public function __construct($db) {
        $this->db = $db;
        $this->identityMap = array();
    }

    public function findById($id) {
        if (isset($this->identityMap[$id])) {
            return $this->identityMap[$id];
        }

        $stmt = $this->db->prepare('SELECT * FROM users WHERE id = ?');
        $stmt->execute(array($id));
        $row = $stmt->fetch();

        if (!$row) {
            return null;
        }

        $user = new User($row['id'], $row['name'], $row['email']);
        $this->identityMap[$id] = $user;

        return $user;
    }
}

В этом примере класс User представляет собой объект, который мы хотим сохранить в памяти приложения. Класс UserMapper отвечает за получение данных из базы данных и создание объектов User. Он также содержит identityMap, которая хранит уже созданные объекты User.

Метод findById класса UserMapper получает идентификатор пользователя и проверяет, есть ли уже объект User с таким идентификатором в identityMap. Если объект уже существует, метод возвращает его. Если объект не существует, метод получает данные из базы данных, создает новый объект User и добавляет его в identityMap.

Использование шаблона Identity Map позволяет избежать повторного создания объектов и обеспечивает единообразный доступ к этим объектам. Это может улучшить производительность приложения и упростить управление объектами в памяти.

Заключение

Шаблон Identity Map — это полезный паттерн проектирования, который может быть использован для управления объектами в памяти приложения. Он позволяет избежать повторного создания объектов и обеспечивает единообразный доступ к этим объектам. Пример на PHP показывает, как можно использовать этот шаблон для управления объектами User.


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

Entity по Эвансу

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