Android回调与观察者模式的实现原理
程序员文章站
2022-06-12 13:21:52
回调与观察者模式的实现原理:废话不多说,直接上demo回调的原理:
观察者模式:
a类中定义一个被观察者画家
package co...
回调与观察者模式的实现原理:废话不多说,直接上demo回调的原理:
观察者模式:
a类中定义一个被观察者画家
package com.example.view; import android.content.context; import android.graphics.canvas; import android.graphics.paint; import android.view.view; import java.util.arraylist; /** * user: uidq0530 ,date: 2017-03-29. * description: * * @author xhunmon */ public class a extends view { private paint mpaint; public a(context context) { super(context); mpaint = new paint(); } //1.进来的人给了一张座子 public interface onalistener{ //可以看画家绘制 void look(); } //2.一个房间 private arraylist<onalistener> lists = new arraylist<>(); //3.进入房间的通道 public void register(onalistener listener){ lists.add(listener); } @override protected void ondraw(canvas canvas) { super.ondraw(canvas); canvas.drawtext("画家画画", 50, 50, mpaint); //4.只有房间的人能看画家绘制 for(int i=0 ;i<lists.size(); i++){ lists.get(i).look(); } } //5.出去房间的通道 public void unregister(onalistener listener){ if(lists.contains(listener)) lists.remove(listener); } }
b类中是观察者人,人可以有很多个,但是画家只能有一个
package com.example.test3; import android.app.activity; import android.os.bundle; import android.widget.toast; import com.example.view.a; /** * user: uidq0530 ,date: 2017-03-29. * description: * * @author xhunmon */ public class b extends activity { private a.onalistener mlistener; private a ma; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); ma = new a(this); //1.创建一个人 mlistener = new a.onalistener() { //3.当进入房间之后,人才能看到画家绘制 @override public void look() { toast.maketext(b.this, "我注册了,就可以监听a中画家是否在绘制了", toast.length_short).show(); } }; //2.进入房间 ma.register(mlistener); setcontentview(ma); } @override protected void ondestroy() { super.ondestroy(); //4.出去房间 if(mlistener != null) ma.unregister(mlistener); } }
总结:最常见的观察者是广播,而观察者的本质就是回调,所以实现观察者的其实就是一堆回调。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。