首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

观察者模式(公布-订阅)

2013-08-09 
观察者模式(发布-订阅)可以看出来,观察者模式,是一种一对多的关系,即多个观察者监听一个主题。?二、示例代码

观察者模式(发布-订阅)

可以看出来,观察者模式,是一种一对多的关系,即多个观察者监听一个主题。

?

二、示例代码

商品价格打折后,所有关注、收藏该商品的用户都收到相关的信息提醒。

角色:

1)商品:被观察者;

2)用户:观察者

?

1.商品(发布者)

public class client {/** * @param args */public static void main(String[] args) {//产品Product mobile = new Product();mobile.setName("SAMSUNG手机");mobile.setPrice(2000);Product book = new Product();book.setName("JAVA设计模式");book.setPrice(80);//用户User user1 = new User();user1.setName("张三");user1.getFocusPdts().add(mobile);//关注某一款三星手机//user1.getFocusPdts().add(book);//关注JAVA设计模式User user2 = new User();user2.setName("李四");user2.getFocusPdts().add(mobile);//关注某一款三星手机user2.getFocusPdts().add(book);//关注JAVA设计模式//建立商品和订阅者关联mobile.getFocusUsers().add(user1);book.getFocusUsers().add(user1);book.getFocusUsers().add(user2);//产品打折,发送站内信提醒mobile.payOff(0.1);book.payOff(0.2);}}

?

三、设计分析

常用的处理方式:

将数据库作为数据存储的介质,消息提醒数据保存在数据库表中,采用定时任务的方式来汇总和发送。具体流程:

1.存储用户-关注关联数据

将用户和所关注的数据存储到一张“用户-关注商品关联表”;

?

2.执行汇总任务

商品打折时,触发汇总任务,遍历“用户-关注商品“关联表,将符合发送条件的记录汇总到”提醒消息表“;

?

3.发送折扣提醒消息

遍历”提醒消息表“并发送,发送完成后,将记录标示为已发送。

?

四、分析设计

如果系统的用户、商品数量都很大,这种情况下如何设计功能更合理呢,个人认为有几点需要关注:

1)响应及时性

2)数据的持久性

3)web层压力

4)数据库层压力

5)系统资源的消耗

?

?

?

热点排行