我正在为我们公司设计一个通知系统,用户可以在其中指定是否要发送不同操作的通知。
我想知道这个Design Patter的名称是什么,所以我可以阅读它并按照do和dont的说法进行操作。
故事(要求):当用户对我们的网站(应用程序)采取不同的操作时,操作会发布到他们的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。
答案 0 :(得分:1)
这称为Observer pattern。
答案 1 :(得分:0)
我更像是Publish-subscribe pattern,但我怀疑这对你有帮助。
关于数据模型: 我用3张桌子。由于EventDefinition和ActionDefinition应该非常小,所以你应该总是将它们放在内存中。
EventDefinition id名称 0'在您的应用中做了一些事情' 1'其他东西' ...
ActionDefinition id名称 0'upload_image_tofacebook' 1'send_email' 2 ...
您必须拥有某种“上下文”,其中事件设置了一些数据或变量,并且响应中执行的操作可以从中读取。
订阅 user_id event_id action_id 0 2 3 //当事件id 2发生与user_id相关时0执行操作3