观察者模式,状态模式(例子)_第1页
观察者模式,状态模式(例子)_第2页
观察者模式,状态模式(例子)_第3页
观察者模式,状态模式(例子)_第4页
观察者模式,状态模式(例子)_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、例子例子 有一个美丽的善良的姑娘有一个美丽的善良的姑娘 很多的追求者很多的追求者 追求者队伍会不断的变换追求者队伍会不断的变换 追求者最喜欢问的话追求者最喜欢问的话“你在干嘛你在干嘛” 善良的姑娘不断的回复善良的姑娘不断的回复 困惑困惑 姑娘:不断回复给很多人姑娘:不断回复给很多人 追求者:不断询问追求者:不断询问解决解决 用关注的方式用关注的方式 如果如果boy关注了女孩,则可以通过数据绑定关注了女孩,则可以通过数据绑定方法获得女孩的状态列表。方法获得女孩的状态列表。 女孩会更新自己的状态女孩会更新自己的状态public interface IPrincess void Add(IBoy b

2、);void Remove(IBoy b);void Notify();public class SnowWhite implements IPrincess String state;ArrayList boys=new ArrayList();Overridepublic void Add(IBoy b) boys.add(b);Overridepublic void Remove(IBoy b) boys.remove(b);Overridepublic void Notify() for(IBoy b:boys)b.Update();public interface IBoy void

3、 Update();public class Qiang implements IBoy Overridepublic void Update() System.out.println(小强说状态已更改);public class Cai implements IBoy Overridepublic void Update() System.out.println(状态已更改-Cai);public class XiaoMing public static void main(String args) IBoy qiang=new Qiang();IBoy cai =new Cai();Sno

4、wWhite sw=new SnowWhite();sw.Add(qiang);sw.Add(cai);sw.state =吃饭;sw.Notify();练习练习 订阅新闻订阅新闻 有个新闻自动发布系统,用户可以有个新闻自动发布系统,用户可以订阅订阅或或取消订阅取消订阅该系统,当该系统有该系统,当该系统有新内容新内容时,时,会通知给会通知给订阅它的订阅它的用户。用户。 订阅用户可以通过订阅用户可以通过update方法,获得新闻方法,获得新闻更新。更新。 画类图,写完整代码画类图,写完整代码 public interface INews void Add(IUser u);void Remove

5、(IUser u);void Notify();public interface IUser void Update();public class Seven implements IUser Overridepublic void Update() System.out.println(我的新闻列表已更新-Seven);public class News implements INews public String title,contex;ArrayList myUsers=new ArrayList();Overridepublic void Add(IUser u) myUsers.a

6、dd(u);Overridepublic void Remove(IUser u) myUsers.remove(u);Overridepublic void Notify() for(IUser u:myUsers)u.Update();public class XiaoMing public static void main(String args) IUser seven =new Seven();News news=new News();news.Add(seven);news.title=新标题;news.contex=新内容;news.Notify(); P201 State 意图意图 允许一个对象在其内部改变时改变它的行允许一个对象在其内部改变时改变它的行为,对象看起来似乎修改了它的类为,对象看起来似乎修改了它的类 若一个对象有多种状态,则将它的状态

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论