Rails Insights
```html

Шаблони проектування в Ruby: Реалізація Посередника

Шаблони проектування є важливими інструментами в арсеналі розробника, які допомагають створювати гнучкі та підтримувані програми. Серед багатьох шаблонів, які існують, шаблон Посередника (Mediator) є особливо корисним, коли мова йде про управління взаємодією між об'єктами. У цій статті ми розглянемо, як реалізувати шаблон Посередника в Ruby, щоб спростити комунікацію між різними компонентами системи.

Що таке шаблон Посередника?

Шаблон Посередника визначає об'єкт, який інкапсулює спосіб взаємодії між групою об'єктів. Це зменшує залежність між об'єктами, оскільки вони не спілкуються безпосередньо, а через посередника. Це дозволяє змінювати взаємодію без необхідності модифікувати самі об'єкти.

Переваги використання шаблону Посередника

  • Зменшення залежностей між об'єктами.
  • Спрощення управління взаємодією.
  • Легкість в модифікації та розширенні системи.
  • Покращення читабельності коду.

Основи реалізації шаблону Посередника в Ruby

Щоб реалізувати шаблон Посередника, спочатку визначимо, які компоненти нам потрібні. У нашому прикладі ми створимо просту систему чату, де користувачі можуть надсилати повідомлення один одному через посередника.

Крок 1: Створення класу Посередника

Почнемо з визначення класу Посередника, який буде відповідати за управління користувачами та їх повідомленнями.

class ChatMediator
  def initialize
    @users = []
  end

  def add_user(user)
    @users << user
    user.set_mediator(self)
  end

  def send_message(message, sender)
    @users.each do |user|
      # Не надсилаємо повідомлення відправнику
      user.receive_message(message) unless user == sender
    end
  end
end

Крок 2: Створення класу Користувача

Тепер створимо клас Користувача, який буде взаємодіяти з Посередником для надсилання та отримання повідомлень.

class User
  attr_accessor :name

  def initialize(name)
    @name = name
  end

  def set_mediator(mediator)
    @mediator = mediator
  end

  def send_message(message)
    puts "#{@name} відправляє: #{message}"
    @mediator.send_message(message, self)
  end

  def receive_message(message)
    puts "#{@name} отримує: #{message}"
  end
end

Крок 3: Використання шаблону Посередника

Тепер, коли у нас є класи Посередника та Користувача, давайте побачимо, як ми можемо їх використовувати.

mediator = ChatMediator.new

user1 = User.new("Аліса")
user2 = User.new("Боб")
user3 = User.new("Карл")

mediator.add_user(user1)
mediator.add_user(user2)
mediator.add_user(user3)

user1.send_message("Привіт, всім!")
user2.send_message("Привіт, Аліса!")

У цьому прикладі, коли Аліса надсилає повідомлення, Посередник передає його всім іншим користувачам, крім Аліси. Таким чином, Боб і Карл отримують повідомлення.

Розширення функціональності

Шаблон Посередника можна також розширити, щоб включати додаткові функції, такі як історія повідомлень, типи повідомлень або навіть можливість блокування користувачів. Розглянемо, як можна реалізувати просту історію повідомлень.

Крок 4: Додавання історії повідомлень

class ChatMediator
  def initialize
    @users = []
    @history = []
  end

  def add_user(user)
    @users << user
    user.set_mediator(self)
  end

  def send_message(message, sender)
    @history << { sender: sender.name, message: message }
    @users.each do |user|
      user.receive_message(message) unless user == sender
    end
  end

  def show_history
    puts "Історія повідомлень:"
    @history.each do |entry|
      puts "#{entry[:sender]}: #{entry[:message]}"
    end
  end
end

Крок 5: Використання історії повідомлень

Тепер давайте перевіримо, як використовувати історію повідомлень у нашій системі чату.

mediator = ChatMediator.new

user1 = User.new("Аліса")
user2 = User.new("Боб")
user3 = User.new("Карл")

mediator.add_user(user1)
mediator.add_user(user2)
mediator.add_user(user3)

user1.send_message("Привіт, всім!")
user2.send_message("Привіт, Аліса!")
user3.send_message("Привіт, Боб!")

mediator.show_history

Тепер, коли ми викликаємо метод show_history, ми можемо побачити всі повідомлення, які були надіслані в чаті.

Висновок

Шаблон Посередника є потужним інструментом для управління взаємодією між об'єктами. Він дозволяє зменшити залежності, спростити код та полегшити його підтримку. У нашому прикладі ми реалізували просту систему чату, яка демонструє, як можна скористатися цим шаблоном для поліпшення структури коду.

Використання шаблону Посередника може бути особливо корисним у великих проектах, де взаємодія між об'єктами може стати складною. Сподіваємося, що ця стаття допомогла вам зрозуміти, як реалізувати шаблон Посередника в Ruby та як він може бути корисним у ваших проектах.

```
Published: December 11, 2024

© 2024 RailsInsights. All rights reserved.