当前位置:首页 » 编程语言 » 观察者java

观察者java

发布时间: 2022-07-13 14:02:19

java哪个类是观察者模式

java.util.Observer/java.util.Observable
java.util.EventListener所有的实现
javax.servlet.http.HttpSessionBindingListener
javax.servlet.http.HttpSessionAttributeListener
javax.faces.event.PhaseListener

② Java的回调函数和观察者模式的区别

java的回调 叫listener 模式。
无论是listener模式,还是C++里面的callback模式,本质是一样的
他们都是观察者模式的具体实现。

观察者模式是设计模式中定义的一种思想,而具体到不同的语言环境,使用不同的语法表现出来就会有java的listener objc的 delegate,或者C++的 callback。

③ java中什么叫"观察者设计模式"

才开始学习Java没有多久,看过了不少基础类的书籍,正尝试着做一些基础性的项目来整合零散的知识点。偶然之下在网上查资料时看到别人文章里提及"观察者设计模式",突然很诧异,没有听说过这种模式呢~故而在网上搜集了一些资料又在图书馆找了一下相关书籍来学习。突然觉得也来学学他人,做做笔记吧~例如:现在很多的购房者都在关注房子的价格变化,每当房子价格变化时,所有 购房者都可以观察得到,实际上以上的购房者都属于观察者,他们都在关注着房子的价格。。其实这就叫观察者设计模式。由java.util包中提供的Observable类和Observer接口便可以轻松实现观察者模式,需要被观察的类必须继承Observable类。Observable类的常用方法有:public void addObserver(Observer o) ; public void deleteObserver(Observero); public void update(Observable o,Object arg);protected void setChanged(); //被观察者状态发生改变public void notifyObservers(Object arg) //通知所有观察者状态已改变对观察者模式的第一感觉是,实现此模式应该可以大大简化代码,使相关功能的代码块语义更清晰. 具体还得在以后应用中慢慢体悟下附一个观察者模式的实现:package org.lxh.demoll.obserdemo;import java.util.Observable;
import java.util.Observer;
class House extends Observable{
private float price;
public House(float price){
this.price = price;
}
public void setPrice(float price){
super.setChanged();
super.notifyObservers(price);
this.price=price;
}
public String toString(){
return "房子价格为:" + this.price;
}
}
class HousePriceObserver implements Observer{
private String name;
public HousePriceObserver(String name){
this.name = name;
}
public void update(Observable obj,Object arg){
if(arg instanceof Float){
System.out.println(this.name+"观察到价格是否更改为:");
System.out.println(((Float) arg).floatValue());
}
}
}
public class ObserDemo01{
public static void main(String[] args){
House h = new House(1000000);
HousePriceObserver hpo1 = new HousePriceObserver("购房者A");
HousePriceObserver hpo2 = new HousePriceObserver("购房者B");
HousePriceObserver hpo3 = new HousePriceObserver("购房者C");
h.addObserver(hpo1);
h.addObserver(hpo2);
h.addObserver(hpo3);
System.out.println(h);
h.setPrice(666666);
System.out.println(h);
}
}

④ 如何使用 Java8 实现观察者模式

你说的场景是符合这个模式的:观察者模式的应用场景:1、对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变。2、对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节。观察者模式的优点:1、Subject和Observer之间是松偶合的,分别可以各自独立改变。2、Subject在发送广播通知的时候,无须指定具体的Observer,Observer可以自己决定是否要订阅Subject的通知。3、遵守大部分GRASP原则和常用设计原则,高内聚、低偶合。

⑤ java 观察者模式 主题有观察者的实例,观察者有主题的实例,这样不会循环下去吗有点凌乱。求教。

观察者有主题的实例是方便观察者获取主题的状态, 主题有观察者的实例是方便主题状态发生改变时通知每一个观察者, 这里没有什么矛盾或问题, 另外, 设计模式只不过是一种常见问题的解决方案, 一种编程思想, 并不一定要写成这样才是哪种设计模式, 就如工厂模式, 能创建对象的就是工厂, 至于写法千变万化, 只要他实现的功能是能创建对象, 观察者模式只要他能实现在主题状态改变时通知观察者那就是观察者模式, 学设计模式千万不要被具体的代码实现所迷惑

⑥ java,观察者模式定义3个观察者,发生更新能不能只更新其中一个观察者。

简单的说, 3个观察者属于不同的listener, 那么特定的事件会通知特定的观察者

这里用listener而不用observer是因为, observer就是实现update方法, 而listener有自己的实现方法
同样的, 被观察者如果对应的是observer的话, 那么它只有一个observer列表, 但是如果对应的是listener的话, 不仅有listener列表还有event列表.

就跟pub/sub一样, pub一个主题, 只有订阅了这个主题的人才会收到

⑦ java 观察者类

House类里定义的是int类型,因此这里需要改成

public void update(Observable o,Object arg){
if(arg instanceof Integer){
System.out.print(this.name + "观察者价格改变:");
System.out.println(arg);
}
}

⑧ JAVA观察者模式(observer pattern)

StockData( extends Observable)只需要关注一个事件就好了。把多余的代码分割出来,封装到一个event事件类里。只要有新事件就通知 Investor( implements Observer)观察者有时间了。具体的时间有观察者调用时间的方法来触发。这样代码会整洁不少,逻辑也会很清晰、、

⑨ java 观察者模式,求一个详细解释。

我觉得你别想的太复杂。

观察者模式需要有一个主题,还有一个或多个观察者。

在主题类中有一个观察者的集合。

当调用主题类的某些方法时,自动循环这个集合,调用观察者的方法。

举个例子:

{
privateList<Observer>list;

CountSubject(){
list=newArrayList<Observer>();
}

@Override
publicvoidcount(intnum){
for(inti=0;i<num;i++){
System.out.println(this.getClass().getName()+"-->"+i);
this.notifyObserver(i);
}
}

publicvoidaddObserver(Observerobs){
this.list.add(obs);
}
publicbooleanremoveObserver(Observerobs){
returnthis.list.remove(obs);
}
publicvoidremoveAllObservers(){
this.list.clear();
}

publicvoidnotifyObserver(inti){
for(inta=0;a<list.size();a++){
Observero=list.get(a);
o.update(i);
}
}
}

在客户端调用时,先要初始化一个或多个观察者,然后添加到主题对象。

然后调用主题对象的方法。在主题对象的方法中会自动调用观察者的方法。

⑩ 如何使用Java8实现观察者模式

1、 对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变。
2、 对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节。
观察者模式的优点:
1、 Subject和Observer之间是松偶合的,分别可以各自独立改变。
2、 Subject在发送广播通知的时候,无须指定具体的Observer,Observer可以自己决定是否要订阅Subject的通知。
3、 遵守大部分GRASP原则和常用设计原则,高内聚、低偶合。

热点内容
滑板鞋脚本视频 发布:2025-02-02 09:48:54 浏览:427
群晖怎么玩安卓模拟器 发布:2025-02-02 09:45:23 浏览:552
三星安卓12彩蛋怎么玩 发布:2025-02-02 09:44:39 浏览:738
电脑显示连接服务器错误 发布:2025-02-02 09:24:10 浏览:531
瑞芯微开发板编译 发布:2025-02-02 09:22:54 浏览:141
linux虚拟机用gcc编译时显示错误 发布:2025-02-02 09:14:01 浏览:227
java驼峰 发布:2025-02-02 09:13:26 浏览:646
魔兽脚本怎么用 发布:2025-02-02 09:10:28 浏览:527
linuxadobe 发布:2025-02-02 09:09:43 浏览:206
sql2000数据库连接 发布:2025-02-02 09:09:43 浏览:721