2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Android的设计模式-观察者模式

Android的设计模式-观察者模式

时间:2020-09-12 01:00:49

相关推荐

Android的设计模式-观察者模式

这里写自定义目录标题

Android的设计模式-观察者模式

Android的设计模式-观察者模式

观察者接口

package com.zll.test;public interface Observer{void update(String message);}

被观察者接口

package com.zll.test;//目标对象接口public interface Observable{// 注册观察者void addObserver(Observer observer);// 删除观察者void deleteObserver(Observer observer);// 通知观察者void notifyObservers();}

被观察者实现

package com.zll.test;import android.util.Log;import java.util.concurrent.CopyOnWriteArraySet;public class ObservableImpl implements Observable {private final CopyOnWriteArraySet<Observer> observers = new CopyOnWriteArraySet<>();private String message;@Overridepublic void addObserver(Observer observer) {if (!observers.contains(observer)) {observers.add(observer);}}@Overridepublic void deleteObserver(Observer observer) {observers.remove(observer);}@Overridepublic void notifyObservers() {for (Observer observer : observers) {Log.i("ceshi","update="+message);observer.update(message);}}public void sendMessage(String message) {this.message = message;Log.i("ceshi",message+"");notifyObservers();}}

观察者实现

package com.zll.test;import android.util.Log;public class ObserverImpl implements Observer {public String playerName;@Overridepublic void update(String message) {Log.i("ceshi","DotaPlayer-" + playerName + "接收到信息:" + message);}}

调用

package com.zll.test;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ObserverImpl playerA = new ObserverImpl();playerA.playerName = "甲";ObservableImpl messageCenter = new ObservableImpl();messageCenter.addObserver(playerA);for(int i=0;i<10;i++) {messageCenter.sendMessage("测试看我输出多少次……");}}}

结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。