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

观察者模式在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-08-24 15:22:16

【设计模式篇】Android设计模式之-观察者模式 自我见解的相关文章

Android设计模式源码解析之观察者模式

Android设计模式源码解析之观察者模式 本文为 Android 设计模式源码解析 中 观察者模式 分析 Android系统版本: 2.3 分析者:Mr.Simple,分析状态:未完成,校对者:Mr.Simple,校对状态:未开始 1. 模式介绍 模式的定义 定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新. 模式的使用场景 关联行为场景.需要注意的是,关联行为是可拆分的,而不是"组合"关系: 事件多级触发场景: 跨系统的消息交换

java/android 设计模式学习笔记(2)---观察者模式

这篇来讲一下观察者模式,观察者模式在实际项目中使用的也是非常频繁的,它最常用的地方是GUI系统.订阅--发布系统等.因为这个模式的一个重要作用就是解耦,使得它们之间的依赖性更小,甚至做到毫无依赖.以GUI系统来说,应用的UI具有易变性,尤其是前期随着业务的改变或者产品的需求修改,应用界面也经常性变化,但是业务逻辑基本变化不大,此时,GUI系统需要一套机制来应对这种情况,使得UI层与具体的业务逻辑解耦,观察者模式此时就派上用场了. PS:对技术感兴趣的同鞋加群544645972一起交流. 设计模式

android设计模式之--观察者模式

最近比较忙,好久没有更新博客了,今天就将最近研究的一个东西总结一下,最近在维护公司的一个项目,我负责的模块主要是下载杂志后及时的更新UI,将最新的下载进度更新到UI上,中间遇到的一个问题是:同一个对象的下载进度会有多个Item监听它的状态,也就是说一个进度要更新到多个Item上,开始没有什么头绪,百度一番后发现了观察者模式这个东西,它就是为了满足这种一对多问题而出现的. 有了思路以后,就着手开始了解观察者模式是如何工作的,虽然以前知道设计模式里有这个东西,但还真是没用过,下面就讲解一下观察者模式

谈谈23种设计模式在Android源码及项目中的应用

本文首发于个人博客:Lam's Blog - 谈谈23种设计模式在Android源码及项目中的应用,文章由MarkDown语法编写,可能不同平台渲染效果不一,如果有存在排版错误图片无法显示等问题,烦请移至个人博客,如果个人博客无法访问可以留言告诉我,转载请声明个人博客出处,谢谢. 前言 本文将结合实际谈谈23种设计模式,每种设计模式涉及 * 定义:抽象化的定义与通俗的描述,尽量说明清楚其含义与应用场景 * 示例:如果项目中有使用过该模式,则会给出项目中的代码,否则会给出尽可能简单好理解的java

java/android 设计模式学习笔记(14)---外观模式

这篇博客来介绍外观模式(Facade Pattern),外观模式也称为门面模式,它在开发过程中运用频率非常高,尤其是第三方 SDK 基本很大概率都会使用外观模式.通过一个外观类使得整个子系统只有一个统一的高层的接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节.当然,在我们的开发过程中,外观模式也是我们封装 API 的常用手段,例如网络模块.ImageLoader 模块等.其实我们在开发过程中可能已经使用过很多次外观模式,只是没有从理论层面去了解它. 转载请注明出处:http://bl

java/android 设计模式学习笔记(10)---建造者模式

这篇博客我们来介绍一下建造者模式(Builder Pattern),建造者模式又被称为生成器模式,是创造性模式之一,与工厂方法模式和抽象工厂模式不同,后两者的目的是为了实现多态性,而 Builder 模式的目的则是为了将对象的构建与展示分离.Builder 模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程.一个复杂的对象有大量的组成部分,比如汽车它有车轮.方向盘.发动机.以及各种各样的小零件,要将这些部件装配成一辆汽车,这个装配过

java/android 设计模式学习笔记(一)---单例模式

前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使用的时候也会有一些坑. PS:对技术感兴趣的同鞋加群544645972一起交流 设计模式总目录 java/android 设计模式学习笔记目录 特点 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的使用很广泛,比如:线程池(threadpool).缓存(cache).对

java/android 设计模式学习笔记(7)---装饰者模式

这篇将会介绍装饰者模式(Decorator Pattern),装饰者模式也称为包装模式(Wrapper Pattern),结构型模式之一,其使用一种对客户端透明的方式来动态的扩展对象的功能,同时它也是继承关系的一种替代方案之一,但比继承更加灵活.在现实生活中也可以看到很多装饰者模式的例子,或者可以大胆的说装饰者模式无处不在,就拿一件东西来说,可以给它披上无数层不一样的外壳,但是这件东西还是这件东西,外壳不过是用来扩展这个东西的功能而已,这就是装饰者模式,装饰者的这个角色也许各不相同但是被装饰的对

设计模式之第18章-观察者模式(Java实现)

设计模式之第18章-观察者模式(Java实现) 话说曾小贤,也就是陈赫这些天有些火,那么这些明星最怕的,同样最喜欢的是什么呢?没错,就是狗仔队.英文的名字比较有意思,是paparazzo,这一说法据说来自意大利电影<滴露牡丹开>中一个专门偷拍明星照片的一个摄影师的名字,“Paparazzo”,中文译为帕帕拉齐,俗语就是狗仔队.这些明星因狗仔队而荣,获得曝光率,也因狗仔队而损,被曝光负面新闻,不管怎么说,总之是“火起来了”,让明星们又爱又恨.(众人:鱼哥,你扯远了).咳咳,这个狗仔队其实嘛,也就