观察者模式在Android广泛的使用。现在结合自己的理解,并且写一个简单demo.
当老师讲课的时候,老师就是一个被观察者,他应该继承于Observer
学生听课的时候,就是观察者,他应该实现观察者的接口。
这样的话,老师讲课的时候,学生都能收到消息了
package com.ferris.observice; import java.util.Observable; import java.util.Observer; import android.content.Context; import android.widget.Toast; //观察者 public class Student implements Observer{ private Teacher teacher; private Context context; private Listeming listeming; public Listeming getListeming() { return listeming; } public void setListeming(Listeming listeming) { this.listeming = listeming; } public Context getContext() { return context; } @Override public String toString() { return "Student [<pre name="code" class="java">teacher
=" + girl + ", context=" + context + "]";}public void setContext(Context context) {this.context = context;}public Teacher getGirl() {return girl;}public void setGirl(Teacher girl) {this.girl = girl;}public Student(){}@Overridepublic void
update(Observable observable, Object data) {// TODO Auto-generated method stubthis.girl = (Teacher)observable;Toast.makeText(context, "老师好!", 1).show();}public interface Listeming{public void lisetem(String sss);}}
package com.ferris.observice; import java.util.Observable; import java.util.Observer; import android.content.Context; import android.widget.Toast; //观察者 public class Student implements Observer{ private Teacher girl; private Context context; private Listeming listeming; public Listeming getListeming() { return listeming; } public void setListeming(Listeming listeming) { this.listeming = listeming; } public Context getContext() { return context; } @Override public String toString() { return "Student [girl=" + girl + ", context=" + context + "]"; } public void setContext(Context context) { this.context = context; } public Teacher getGirl() { return girl; } public void setGirl(Teacher girl) { this.girl = girl; } public Student(){ } @Override public void update(Observable observable, Object data) { // TODO Auto-generated method stub this.girl = (Teacher)observable; Toast.makeText(context, "老师好!", 1).show(); } public interface Listeming{ public void lisetem(String sss); } }
package com.ferris.androidpattern; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Toast; import com.ferris.observice.Student; import com.ferris.observice.Student.Listeming; import com.ferris.observice.Teacher; public class StrategyActivity extends Activity { private Teacher teacher; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.strategy); teacher=new Teacher(); //被观察者 Student student=new Student(); student.setContext(this); student.setGirl(teacher);//添加观察对象 student.setListeming(new Listeming() { @Override public void lisetem(String sss) { // TODO Auto-generated method stub Toast.makeText(StrategyActivity.this, "收到", 1).show(); } }); teacher.addObserver(student); findViewById(R.id.button1).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub teacher.Speak("大家好我是老师哦!"); } } ); } }
时间: 2024-10-27 13:39:43