我想向我们的订阅者添加通知服务。订阅者将能够选择 你最喜欢的部分。当他们中的任何一个发表新文章时,它将发送给他们 带有标题的电子邮件。我们希望提供一种避免对接的解决方案 订阅者和文章之间。 我们有一个 EMailServer 邮件服务器。您不需要知道您的详细信息 配置,或 sendEMail 方法。这些细节都封装在这个类中,其 通过单例模式应用程序访问服务:
责任模式对我来说很清楚,我会使用观察者,但我不知道我是否实施得很好。
我也想过实现控制器设计模式,但是这产生了更多关于如何将其转换为uml的疑问,目前我对观察者的实现如下,不知道是否正确:
>我所做的是,观察者将成为邮件服务器,它将通知订阅者他最喜欢的部分的新文章,而可观察者将与文章的特定主题相关。
我不知道这是否可以,但我想到了这个
关于设计模式,由于单例,我有更多的疑问。
答案 0 :(得分:1)
我认为用户(订阅者)执行的“将此标记为我最喜欢的”操作应该会导致创建观察者对象,该对象会记住创建它的用户并链接(“附加”)到观察到的部分( '主题')。
然后,当添加新文章时,每个部分都应向其所有观察者发送通知(“更新”)。
观察者应该记住其最近更新的一些时间戳或其他标识符,以便它可以在“主题”中检查自上次更新以来添加了哪些文章。然后它通过电子邮件服务器向其订阅者发送一封电子邮件,其中包含有关新文章的信息(并更新其最近更新的内部时间戳/ID)。
或者,“更新”通知可以携带新文章的标题或其他一些 ID(URL...?)。
收到通知后,每个观察者都会向订阅者(记住其 ID)发送一封电子邮件,内容涉及某篇文章(其在“更新”调用中收到的 ID)。
当然也应该有一个“unfavourite”函数供用户使用,它会找到一个对应的观察者对象,将它从一个主体中分离出来,最后销毁它。
答案 1 :(得分:1)
从几个问题开始,Suscriptor
和 InterfaceObservator
命名
那么我们有模式设计问题,我认为您的 subscriber
应该实现 Implement Observer
,而不是由 Server 子类化,然后您可以在 Server 内部使用它作为组合,但类型为 InterfaceObservator
class Suscriptor implements InterfaceObsevator{
//implement here
}
class Server implements OtherInterface{
//uses Observer
private InterfaceObsevator suscriptor
}