我正在设计一个内容管理系统。目前我正在处理文档
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
}
类(class)的大致轮廓如上。
我希望针对某些操作(提交、批准、拒绝文件等)发送通知,具体取决于提交给哪家报纸。
然后我可以进入相应的方法,例如“saveDocument”,检查 key 是否存在,如果存在,则将其映射到的通知发送给编辑/作者。
我认为枚举是一个很好的计划,因为可以添加或删除尽可能多的内容,而且并非所有报纸都想使用所有内容。然而我被告知这是一个糟糕的设计,因为电子数字很难管理,并且需要通过重新部署等进行大量维护。
我想知道是否有更适合这种设计的设计模式。
我认为的替代方案只是每次调用一个方法,并使用 freemarker 来确定是否应该发送电子邮件。
主要特点:
- 报纸有通知(可能有多种类型)
- 某些操作需要向编辑 ID 或作者 ID 发送通知
- 每份报纸的 Activity 数量会有所不同。
感谢您的帮助。
最佳答案
听起来像是 Observer Pattern 的一个明确的案例。 ,其中报纸
和文档
将是主题,而您的通知
将是观察者。
如果不能避免使用枚举
,因为它们非常适合区分通知类型以及文档操作。除了添加新通知或媒体类型的其他代码更改所需的部署之外,我看不出他们如何需要额外的重新部署。
不过,如果需要在不重新启动服务器的情况下重新配置通知、文档操作和媒体类型之间的映射,您可以实现某种基于数据库或配置文件的映射。
关于java - Java 中 'event' 驱动的内容通知服务的设计模式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28274766/