Danyloff

Низкое зацепление и Высокая связность из GRASP с примерами на PHP


  • ·

· ·

Принципы низкого зацепления и высокой связности являются важными архитектурными концепциями, применяемыми в различных областях программирования. Они относятся к GRASP (General Responsibility Assignment Software Patterns) – паттернам проектирования, которые описывают, как предоставлять ответственность для объектов программного кода.

Низкое зацепление (Low Coupling) – это концепция, которая описывает степень зависимости между объектами программного кода. Чем меньше объекты зависят друг от друга, тем лучше. Если объекты имеют высокую степень зависимости, то изменение одного объекта может привести к неожиданным изменениям в других объектах, что затрудняет поддержку кода и может привести к ошибкам.

Высокая связность (High Cohesion) – это концепция, которая описывает степень связности между компонентами программного кода. Чем больше связь между элементами в модуле, тем лучше. Компоненты должны быть логически связаны друг с другом и выполнять схожие задачи.

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

Рассмотрим пример кода на PHP, который демонстрирует использование рассмотренных принципов

class Customer {
    private $database;
    private $email;
    
    public function __construct($database) {
        $this->database = $database;
    }
    
    public function setEmail($email) {
        $this->email = $email;
    }
    
    public function save() {
        $this->database->saveCustomerEmail($this->email);
    }
}

class Database {
    private $connectionString;
    
    public function __construct($connectionString) {
        $this->connectionString = $connectionString;
    }
    
    public function saveCustomerEmail($email) {
        // Сохраняем email в базе данных
    }
}

// Использование
$database = new Database('connectionString');
$customer = new Customer($database);
$customer->setEmail('[email protected]');
$customer->save();

Класс Customer отвечает за создание нового пользователя и сохранение его в базе данных. Он имеет только один метод save, который сохраняет email в базе данных. Класс Database обслуживает базу данных и имеет только один метод saveCustomerEmail, который сохраняет email пользователя в базе данных.

Использование различных классов с возможностью взаимодействия друг с другом позволяет достичь высокой связности между компонентами программного кода, что упрощает их поддержку и повторное использование. Низкая связь, в свою очередь, достигается за счет того, что каждый класс выполняет только свои задачи, не затрагивая другие классы.

Заключение

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


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

Value Object по Эвансу

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

O из SOLID с примерами на PHP

Принцип открытости/закрытости (Open/Closed Principle) - это один из пяти принципов SOLID, который гласит, что программные сущности (классы, модули, функции и...