Java设计模式菜鸟系列(两)建模与观察者模式的实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java设计模式菜鸟系列(两)建模与观察者模式的实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1750字,纯文字阅读大概需要3分钟。
内容图文
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39755577
观察者(Observer)模式定义:在对象之间定义了一对多的依赖关系,这样一来。当一个对象改变状态时,依赖它的对象都会收到通知并自己主动跟新。Java已经提供了对观察者Observer模式的默认实现, Java对观察者模式的支持主要体如今Observable类和Observer接口。
先看uml模型图:
一、UML模型图
二、代码实现
/** 演示样例:咱们去菜市场买菜 * * 小商贩--主题 */ class Food extends Observable { /** 菜名 */ private String name; /** 菜价 */ private float price; public Food(String name, float price) { this.name = name; this.price = price; } public String getName() { return name; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; /** * 设置菜价的状态已经被改变 */ this.setChanged(); /** * 通知【全部】正在看菜(已经注冊了)的顾客,然后回调Observer的update方法进行更新 * * 这里能够体现对象的一对多:一个小商贩一旦更新价格(即一个对象改变状态)。便会自己主动通知全部的顾客(依赖它的对象都会收到通知) * 并自己主动update */ this.notifyObservers(price); } } /** * 顾客 --观察者 */ class Customer implements Observer { private String name; public Customer(String name) { this.name = name; } public String getName() { return name; } @Override public void update(Observable o, Object arg) { if (o instanceof Food && arg instanceof Float) { Food food = (Food) o; float price = (Float) arg; System.out.println("您好:" + this.name + " ," + food.getName() + "的价格已经发生改变。如今的价格为:" + price + "元/斤"); } } } /** * client測试类 * * @author Leo */ public class Test { public static void main(String[] args) { Food food = new Food("土豆", 1.0f); Customer zhangsan = new Customer("张三"); Customer lisi = new Customer("李四"); /** * 加入顾客 */ food.addObserver(zhangsan); food.addObserver(lisi); /** * 更新价格 */ food.setPrice(1.5f); } }
三、应用场景
GUI框架、气象观察等
四、小结
以上内容假设有不同的见解或疏忽的地方,还请大家提出宝贵的建议或意见。
最后大家能够试着将以下的uml模型进行详细的代码实现,如图:附源代码
版权声明:本文博主原创文章,博客,未经同意不得转载。
内容总结
以上是互联网集市为您收集整理的Java设计模式菜鸟系列(两)建模与观察者模式的实现全部内容,希望文章能够帮你解决Java设计模式菜鸟系列(两)建模与观察者模式的实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。