谁有课程代码?

来源:2-3 改造通用代码解决场景问题

SapereAudor

2017-12-24 21:26

谁有课程代码?

写回答 关注

1回答

  • tldyl
    2017-12-28 21:38:46
    已采纳
    package dyl.study.observer;
    
    import java.util.Observable;
    
    public class ConcreteWeatherSubject extends Observable {
    	//天气情况的内容
    	private String content;
    
    	public String getContent() {
    		return content;
    	}
    
    	public void setContent(String content) {
    		this.content = content;
    		this.setChanged();
    		this.notifyObservers(content); //推方式
    	}
    	
    }
    package dyl.study.observer;
    
    import java.util.Observable;
    import java.util.Observer;
    //具体的观察者对象
    public class ConcreteObserver implements Observer {
    	private String observerName;
    	@Override
    	public void update(Observable o, Object arg) {
    		//推方式
    		System.out.println(observerName+"收到了"+arg);
    		//拉方式
    		System.out.println(observerName+"收到了消息,主动到目标对象那去取得数据,取得的数据为:"+((ConcreteWeatherSubject)o).getContent());
    	}
    	public String getObserverName() {
    		return observerName;
    	}
    	public void setObserverName(String observerName) {
    		this.observerName = observerName;
    	}
    
    }
    package dyl.study.observer;
    
    public class Client {
    	public static void main(String[] args) {
    		ConcreteWeatherSubject subject = new ConcreteWeatherSubject();
    		ConcreteObserver p1 = new ConcreteObserver();
    		ConcreteObserver p2 = new ConcreteObserver();
    		p1.setObserverName("我");
    		p2.setObserverName("你");
    		subject.addObserver(p1);
    		subject.addObserver(p2);
    		subject.setContent("QQ天气:【某地】阴7°/10°,09:05更新~");
    	}
    }


    Sapere...

    非常感谢!

    2017-12-29 21:29:47

    共 1 条回复 >

观察者模式

解决发布/订阅问题的观察者模式,以及何时使用观察者模式

55289 学习 · 36 问题

查看课程

相似问题