【发布时间】:2018-03-12 15:00:03
【问题描述】:
假设我有一个Subscriber 类和一个StatusUpdate 类。我希望所有订阅者在有新的StatusUpdate 时都能收到通知。
这是它现在的样子:
class Subscriber
attr_accessor :number
end
还有StatusUpdate 类:
class StatusUpdate
attr_accessor :status
def initializer(body)
@body = body
notify_subscribers
end
private
def notify_subscribers
Subscriber.all.each do |subscriber|
# some code to send an SMS to the subscriber
end
end
end
但是看着这段代码,我突然想到通知订阅者的责任可能应该在于Subscriber 类,我应该将notify_subscribers 方法移到那里并从StatusUpdate 的@987654330 调用它@(类似于Subscriber.notify_all(message)),但这对我来说也有点乱。
执行此操作的正确 OO 方法是什么?通知订阅者是Subscriber 类的责任吗? StatusUpdate 上课?或者也许是一些三等舱?
附:代码是用 Ruby 编写的,但我想这更像是一个通用的面向对象设计问题。
【问题讨论】: