【问题标题】:Which Design Patterns for 'event'-driven notification service for Content in Java?Java中内容的“事件”驱动通知服务的哪些设计模式?
【发布时间】:2015-02-02 09:41:31
【问题描述】:

我正在设计一个内容管理系统。此刻我正在处理文件

public Enum DocAction(){
    DOCUMENTSUBMITTED,
    DOCUMENTAPPROVED,
    DOCUMENTREJECTED
}

public Enum NotificationType(){
    EMAIL,
    TEXT,
    POPUP
}

public class Newspaper(){
    private long                id;
    private map<DocAction,long> notifications;
    private long                EditorId
}

Public class Document(){
    private long      id;
    private long      newspaperId;
    private long      authorId
    private String    article
}

Public class Notification(){
    private long     id
    private map<NotificationType,long>     notifications
}

类的大致轮廓如上。

我希望它针对某些操作(文件提交、批准、拒绝等)发出通知,具体取决于它提交给的报纸。

然后我可以进入相应的方法,例如“saveDocument”,检查一个键是否存在,如果存在则将它映射到的通知发送给编辑/作者。

我认为 Enums 是一个很好的计划,它可以添加或删除尽可能多的内容,而且并非所有报纸都想全部使用。但是我被告知这是一个糟糕的设计,因为 e-nums 很难管理,并且需要通过重新部署等进行大量维护。

我想知道是否有更适合这种设计的设计模式。

我认为的替代方案只是每次调用一个方法,并使用 freemarker 来确定是否应该发送电子邮件。

主要特点:

  • 报纸有通知(可能有多种类型)
  • 在某些操作时需要发送通知,有时是编辑器 ID,有时是作者 ID
  • 每份报纸的活动数量会有所不同。

感谢您的帮助。

【问题讨论】:

    标签: java design-patterns notifications content-management-system


    【解决方案1】:

    听起来像是Observer Pattern 的一个明确案例,其中NewspaperDocument 将是Subjects,而您的Notifications 将是Observers

    If 不会避免使用Enums,因为它们是区分通知类型以及文档操作的理想选择。除了添加新通知或媒体类型的其他代码更改所需的那些之外,我看不出他们将如何需要额外的重新部署。

    不过,如果需要在不重新启动服务器的情况下重新配置通知、文档操作和媒体类型之间的映射,您可以实现某种基于数据库或配置文件的映射。

    【讨论】:

    • 谢谢,在调查了这个之后,我的经理回来并建议了枚举....并且使用类似于观察者模式,只是通过弹簧和自动装配。谢谢
    猜你喜欢
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 2012-10-18
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多