- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java设计模式课件chap05
* * Application.class: (1)→(2) →(3) : SeekJobCenter.class:(1) ~(10) 语义:创建具体主题的实例(通过构造方法完成存放观察者的引用) UML语义:“关联”关系 案例分析: * * Application.class: (1)→(2) →(3) →(4): UniverStudent.class:(1) ~(9) 语义:创建具体观察者(构造方法) UML语义:“关联”关系 案例分析: * * Application.class: (1)→(2) →(3) →(4) →(5) : HaiGui.class:(1) ~(10) 语义:创建具体观察者(构造方法) UML语义:“关联”关系 案例分析: * * Application.class: (1)→(2) →(3) →(4) →(5) →(6) SeekJobCenter.class:(28) ~(35)——giveNewMess(String str)方法 语义:具体主题给出求职信息 案例分析: * * Application.class: (1)→(2) →(3) →(4) →(5) →(6) →(7) SeekJobCenter.class:(19) ~(27)——notifyObservers()方法 语义:具体主题给出求职信息 案例分析: 5.3 观察者模式中的“推”与“拉”数据 * * 具体主题在使用主题规定的方法通知具体接收者更新数据时,有两种方式: 推数据方式——具体主题将变化后的数据全部交给具体观察者;即将变化后的数据传递给具体观察者用于更新数据方法的参数。 适用情形——具体观察者需要变换后的全部数据时,采用这种方式(上例)。 5.3 观察者模式中的“推”与“拉”数据 * * 拉数据方式——具体主题将变化后的数据全部交给具体观察者;即将变化后的数据传递给具体观察者用于更新数据方法的参数。 适用情形——具体观察者需要变换后的全部数据时,采用这种方式。 3 “拉”数据方式的案例 * * 一家商店每天都发布当天打折商品的名字、原价和折扣后的价格,有两位顾客对此感兴趣,但是一位顾客只关心打折商品的名称,不关心原价和折扣后的价格,而另一位顾客则相反。 1)主题 * * 主题接口声明的方法: 添加观察者 删除观察者 通知观察者更新数据 1)主题接口 * * public interface Subject{ public void addObserver(Observer o); public void deleteObserver(Observer o); public void notifyObservers(); } 2)观察者 * * public interface Observer{ public void update(); } 3)具体主题 * * 具体主题——商店 商品名称——String,商品原价和折扣后价格——double 商店提供了: 获取商品名称、商品价格和折扣后价格的方法。 * * import java.util.ArrayList; public class ShopSubject implements Subject{ String goodsName; double oldPrice, newPrice; ArrayListObserver customerList; ShopSubject() { //构造方法 customerList=new ArrayListObserver(); } * * public void addObserver(Observer o){ if(!(customerList.contains(o))) customerList.add(o); } public void deleteObserver(Observer o){ if(customerList.contains(o)) customerList.remove(o); } * * public void notifyObservers(){ for(int i=0;icustomerList.size();i++){ Observer observer=customerList.get(i); observer
文档评论(0)