1

我正在为我们公司设计一个通知系统,用户可以在其中指定是否要为不同的操作发送通知。

我想知道这个设计模式的名称是什么,所以我可以阅读它并遵循该做和不做的事情。

故事(要求):当用户在我们的网站(应用程序)上采取不同的行动时,这些行动会被发布到他们的 facebook 和 twitter 帐户,我们也会给他发电子邮件。有很多动作,在 Facebook 下有 6 个,在 Twitter 下有 6 个,在电子邮件下有 12 个。因此,为每个操作创建单独的列是没有意义的,特别是它们的值默认为 true。

因此,例如,当用户将新图像上传到我们网站上的页面时,我们希望将其发布到他们的 facebook 和 twitter,他们只需将图像上传到我们的应用程序。

我的设计是一个包含这些列的 meta_data 表(带有示例行):

id, user_id, namespace,  notification,   value 
0,  1,       'facebook', 'image_upload', false
1,  1,       'twitter',  'video_post',   false
2,  10,      'email',    'send_money',   false

同样对于所有操作及其命名空间,我在创建表时默认将一些行添加到数据库中,其中我将所有值设置为 true。然后在用户设置页面中,他可以看到这些设置的复选框,默认情况下都是选中的。每次用户创建取消选中一个时,我都会为该用户、操作和命名空间创建一个新行,其值为 false。

4

2 回答 2

1

这称为观察者模式

于 2012-07-03T03:56:47.610 回答
0

我会更像一个Publish-subscribe 模式,但我怀疑这会对你有所帮助。

关于数据模型:我会使用 3 个表。由于 EventDefinition 和 ActionDefinition 应该非常小,因此您应该始终将它们放在内存中。

EventDefinition id name 0 '在你的应用中做了一些事情' 1 '其他事情' ...

ActionDefinition id 名称 0 'upload_image_tofacebook' 1 'send_email' 2 ...

您必须有某种“上下文”,其中事件设置了一些数据或变量,并且响应中执行的操作可以从中读取。

Subscription user_id event_id action_id 0 2 3 // 当与 user_id 0 相关的 event id 2 发生时执行 action 3

于 2012-07-04T03:27:39.850 回答