`
songjindian
  • 浏览: 73818 次
  • 性别: Icon_minigender_1
  • 来自: 河南
文章分类
社区版块
存档分类
最新评论

设计模式---Observer模式(由浅入深二)

阅读更多

在第一部分我们已经学习了一个实例,但是在有些时候,一个要成为观察者的类可能已经存在,这事可能不希望对其进行修改。如果这样子的话,很容易的就想到了Adapter模式,我们可以用Adaper模式进行转换,下面我将上一个实例转换的模式图列出如下:

上面的图很容易理解,所以在这里不再用代码实现。

下面我们来继续第一部分遗留下来的东西,使用jdk自带的Observer接口和Observable类来实现Observer模式(此部分代码需要读者了解Observer接口和Observable类,可以查看jdk原码:java/util/Observer 或 java/util/Observable):

 

package my.observer;
import java.util.Observable;
import java.util.Observer;

	class SoftSchool extends Observable{
		public SoftSchool(){
		}
		private String info;
		public void setInfo(String info){
			this.info = info;
			setChanged();
			notifyObservers(info);
		}      
    }
    class Teacher implements Observer{
    		public void update(Observable obj,Object arg)
	{
		System.out.println("Hi sir,today have a meeting about"+arg);
	}
    }
	class Student implements Observer{
		public void update(Observable obj,Object arg)
	{
		System.out.println("Hi Guys,today have a meeting about"+arg);
	}
	}
	class Cleaner implements Observer{
	public void update(Observable obj,Object arg)
	{
		System.out.println("Hi Cleaners,today have a meeting about"+arg);
	}
	}
	public class TestObserver{
		public static void main(String args[]){
		SoftSchool ss = new SoftSchool();
		Observer student = new Student();
		Observer teacher = new Teacher();
		Observer cleaner = new Cleaner();
		ss.addObserver(student);
		ss.addObserver(teacher);
		ss.addObserver(cleaner);
		ss.setInfo("Wrap-up meeting");
		}
	}

 

运行:

写道
Hi Cleaners,today have a meeting aboutWrap-up meeting
Hi sir,today have a meeting aboutWrap-up meeting
Hi Guys,today have a meeting aboutWrap-up meeting

 最后总结一下Observer模式:

1,意图:在对象之间定义一种一对多的依赖关系,这样当一个对象的状态改变时,所有依赖者都将得到通知并自动更新。

2,问题:当某个事件发生时,需要向一系列变化着的对象发出通知。

3,解决方案:Observer将监视某个事件的责任委托给中心对象:Subject。

4,实现:让某个事件发生时需要知道的对象(Observer)将自己注册到另一个监视事件发生或自己触发事件的对象(Subject)上。事件发生时,Subject告诉Observer事件发生。为了对所有Observer类型的对象实现Observer接口,有时候需要使用Adapter模式。

0
0
分享到:
评论

相关推荐

    asp.net知识库

    与DotNet数据对象结合的自定义数据对象设计 (二) 数据集合与DataTable 与DotNet数据对象结合的自定义数据对象设计 (一) 数据对象与DataRow ASP.NET中大结果集的分页[翻译] .net 2.0 访问Oracle --与Sql Server的...

    委托和事件由浅入深适合新手

    委托 和 事件在 .Net Framework中的...我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。

    C#中的--委托和--事件

    委托 和 事件在 .Net ...本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。

    C#中的委托与事件

    理解委托和事件对很多接触C#...本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论

    C#中委托与事件的区别

    委托 和 事件在 .Net ...本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论

    C#委托时间最好的教程

    委托 和 事件在 .Net Framework 中的应用非常广泛,然而,较好地理解委托和事件对很多 接触 C#时间不长的人来说并不容易。...中的委托和事件、委托和事件对 Observer 设计模式的意义,对它们的中间代码也做了讨论。

    C#中的委托和事件(HTML)

    委托 和 事件在 .Net Framework中的应用...本文中,将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。

    C#中的委托和事件详解(含源码)

    委托 和 事件在 .Net ...本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。

    C#中的委托和事件chm

    委托 和 事件在 .Net Framework中的...本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。

    C#中的委托和事件.doc

    委托 和 事件在 .Net Framework中的...本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。

    C#由浅至深深度解析Delegate委托与Event事件

    委托 和 事件在 .Net ...本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。

    C#的委托和事件详解

    委托 和 事件在 .Net ...本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。

    EventPro.zip

    委托 和 事件在 .Net ...本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论

    C#委托与事件

    委托 和 事件在 .Net ...本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。

    .net C#中的委托和事件

    委托和事件在 .Net ...本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。

    c#的委托和事件教程

    委托 和 事件在 .Net ...本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。

    C#委托与事件的经典讲解

    委托 和 事件在 .Net ...本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。

    C#中的委托和事件

    委托 和 事件在 .Net ...本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。

    C__中的委托和事件.doc

    委托 和 事件在 .Net ...本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。

    C# 中的委托和事件

    委托 和 事件在 .Net ...本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。

Global site tag (gtag.js) - Google Analytics