Java学习笔记——利用接口和observer实现对象监视
2014-12-27 20:11
701 查看
Java中,又可以监视类变化的observer,一旦被监视类发生改变,可以立刻产生响应函数,具体实现如下:
JekyllAndHyde.java中
JekyllAndHyde.java中
/*Observable的继承类,用于实现监视器的各项功能*/ import java.util.*; public class JekyllAndHyde extends Observable { public void drinkPotion(){ name="Mr.Hyde"; setChanged();//observer类中函数,标记要观察的对象发生改变 notifyObservers();//一旦观察的对象发生变化,这个函数边会通知各个观察器,同时利用clearObserver函数清除对象改变标记 } public String getName(){//返回名字 return name; } private String name="Dr. Jekyll"; }Person.java中
/*创建可以被监视的对象类,返回人员的名字和话语 * 接口是可以定义一系列的功能函数,在接口中可以并不具体定义,可以在类中具体实现 * */ import java.util.*; public class Person implements Observer { public Person(String name, String says) { this.name = name; this.says = says; } public void update(Observable thing,Object o){//实现Observer接口中必有的函数 System.out.println("It's "+((JekyllAndHyde)thing).getName()+"\n"+name+": "+says); } private String name; private String says; }Horrific.java中
import java.util.*; public class Horrific { /** * @param args */ public static void main(String[] args) { // TODO 自动生成方法存根 JekyllAndHyde man = new JekyllAndHyde(); Observer[] crowd = {//创建监视器,person是实现observer的接口,可以类似于出自一个基类 new Person("Officer", "What's all this then?"), new Person("Eileen Backwards", "Oh, no, it's horrible-those teeth!"), new Person("Phil McCavity", "I'm your local dentist-here's my card."), new Person("Slim Sagebrush", "What in tarnation's goin' on there?"), new Person("Freaky Weirdo", "Real cool, man. Where can I get that stuff?") }; for(Observer observer:crowd){ man.addObserver(observer);//为类添加监视器,一个对象可以添加多个监视器 } man.drinkPotion();//一旦有改变,setchange会传达给各个监视器,从而产生反应函数,从输出结果可以看出,addObserver中使用的是堆栈 } }实现结果如下:
相关文章推荐
- 学习java笔记 --- 一个实现Iterable<E>接口的小范例
- Java学习笔记_22_Set接口的实现类
- Java 学习笔记--解决一个类实现多个接口的问题
- JAVA学习笔记(三十八)- 创建实现Runnable接口的线程
- 【java编程思想--学习笔记(三)】访问控制-接口实现与类的访问权限
- 【Java学习笔记】Comparable接口的实现和使用
- Java 学习笔记 (3) -抽象类 abstract 接口 interface 内部类 inner class 继承 extends 实现 implements 包 package
- 孙鑫VC学习笔记:第十六讲 利用事件对象实现线程间的同步
- Java学习笔记——利用Serializable写入对象
- Java面向对象学习笔记 -- 5(抽象类、接口)
- Java基础学习笔记(七)Set接口及其实现子类
- Java基础学习笔记(七)Set接口及其实现子类
- Java学习笔记_22_Set接口的实现类
- 【Java学习笔记】Comparable接口的实现和使用
- Java容器学习笔记(二) Set接口及其实现类的相关知识总结
- 【Java学习笔记】基础知识学习12【Set接口的实现类】
- Java学习笔记_23_List接口实现类
- 【Java学习笔记】实现Comparator接口来进行字符串逆向排序
- Effective C# 学习笔记(四十一)使利用DynamicObject或IDynamicMetaObjectProvider接口实现数据驱动的动态类型
- Java学习笔记-对象-继承-接口-多态-内部类