哪些 'event' 驱动的内容通知服务设计模式 Java?

Which Design Patterns for 'event'-driven notification service for Content in Java?

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

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',检查一个键是否存在,如果存在,则将它映射到的通知发送到 editor/author。

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

想知道有没有更适合这种设计的设计模式

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

主要特点:

感谢您的帮助。

听起来像是 Observer Pattern 的明确案例,其中 NewspaperDocument 将是 Subjects 而你的 Notifications 将是 观察者.

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

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