Шаблони проектування є важливими інструментами в арсеналі розробника, які допомагають створювати гнучкі та підтримувані програми. Серед багатьох шаблонів, які існують, шаблон Посередника (Mediator) є особливо корисним, коли мова йде про управління взаємодією між об'єктами. У цій статті ми розглянемо, як реалізувати шаблон Посередника в Ruby, щоб спростити комунікацію між різними компонентами системи.
Шаблон Посередника визначає об'єкт, який інкапсулює спосіб взаємодії між групою об'єктів. Це зменшує залежність між об'єктами, оскільки вони не спілкуються безпосередньо, а через посередника. Це дозволяє змінювати взаємодію без необхідності модифікувати самі об'єкти.
Щоб реалізувати шаблон Посередника, спочатку визначимо, які компоненти нам потрібні. У нашому прикладі ми створимо просту систему чату, де користувачі можуть надсилати повідомлення один одному через посередника.
Почнемо з визначення класу Посередника, який буде відповідати за управління користувачами та їх повідомленнями.
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
Тепер створимо клас Користувача, який буде взаємодіяти з Посередником для надсилання та отримання повідомлень.
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
Тепер, коли у нас є класи Посередника та Користувача, давайте побачимо, як ми можемо їх використовувати.
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("Привіт, Аліса!")
У цьому прикладі, коли Аліса надсилає повідомлення, Посередник передає його всім іншим користувачам, крім Аліси. Таким чином, Боб і Карл отримують повідомлення.
Шаблон Посередника можна також розширити, щоб включати додаткові функції, такі як історія повідомлень, типи повідомлень або навіть можливість блокування користувачів. Розглянемо, як можна реалізувати просту історію повідомлень.
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
Тепер давайте перевіримо, як використовувати історію повідомлень у нашій системі чату.
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 та як він може бути корисним у ваших проектах.
```© 2024 RailsInsights. All rights reserved.