【设计模式篇】Android设计模式之-观察者模式 自我见解

来源:互联网 发布:平安证券行情交易软件 编辑:程序博客网 时间:2024/05/01 23:18

观察者模式在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;}@Overridepublic 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;}@Overridepublic 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(){}@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.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;@Overrideprotected 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() {@Overridepublic void lisetem(String sss) {// TODO Auto-generated method stubToast.makeText(StrategyActivity.this, "收到", 1).show();}});teacher.addObserver(student);findViewById(R.id.button1).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubteacher.Speak("大家好我是老师哦!");}} );}}




0 0
原创粉丝点击