Java Éè¼ÆÄ£Ê½(12)
Observer
Intent
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
How to
Subject
knows its observers. Any number of Observer objects may observe a subject.
provides an interface for attaching and detaching Observer objects.
Observer
defines an updating interface for objects that should be notified of changes in a subject.
Known cases
Listener
MVC
Publish-Subscribe
UML
´úÂëÑùÀý£º
package org.haha.DesignPatterns.observer;
import java.util.ArrayList;
import java.util.List;
public class Observable {
private List<Observer> observers;
public Observable() {
observers = new ArrayList<Observer>();
}
public void register(Observer obs) {
observers.add(obs);
}
public void unregister(Observer obs) {
observers.remove(obs);
}
public void remind() {
for (Observer obs : observers) {
obs.update(this);
}
}
}
package org.haha.DesignPatterns.observer;
public abstract class Observer {
public Observer() {
}
abstract public void update(Observable subject);
}
package org.haha.DesignPatterns.observer;
import java.util.List;
import java.util.ArrayList;
public class Subject extends Observable {
private List<String> datas = new ArrayList<String>();
public void addData(String data) {
datas.add(data);
remind();
}
public List<String> getDatas() {
return datas;
}
}
package org.haha.DesignPatterns.observer;
import java.util.List;
public class Subscriber extends Observer {
private String name;
public Subscriber(String name) {
super();
this.name = name;
}
public void update(Observable sub) {
if (sub instanceof Subject) {
List<String> datas = ((Subject)sub).getDatas();
for (String str : datas) {
System.out.println("Name=" +name + " " + str);
}
}
}
}
p
Ïà¹ØÎĵµ£º
µÚÒ»²½£º²é¿´Linux×Ô´øµÄJDKÊÇ·ñÒѰ²×° £¨Ð¶ÔØcentOSÒѰ²×°µÄ1.4£©
<1># rpm -qa|grep jdk ← ²é¿´jdkµÄÐÅÏ¢»òÖ±½ÓÖ´ÐÐ
»ò
# rpm -q jdk
»ò
# java -version
<2># rpm -qa | grep gcj ← È·ÈÏgcjµÄ°æ±¾ºÅ
<3># yum -y remove java-1.4.2-gcj-compat ← Ð¶ÔØgcj
µÚ¶þ²½£º°²×°JDK
< ......
1.[http://www.javaalmanac.com] – Java¿ª·¢ÕßÄê¼øÒ»ÊéµÄÔÚÏß°æ±¾. ÒªÏë¿ìËٲ鵽ijÖÖJava¼¼ÇɵÄÓ÷¨¼°Ê¾Àý´úÂë, ÕâÊÇÒ»¸ö²»´íµÄÈ¥´¦.
2.[http://www.onjava.com] – O’ReillyµÄJavaÍøÕ¾. ÿÖܶ¼ÓÐÐÂÎÄÕÂ.
3.[http://java.sun.com] – ¹Ù·½µÄJava¿ª·¢ÕßÍøÕ¾ – ÿÖܶ¼ÓÐÐÂÎÄÕ·¢±í.
4.[http ......
<!--
/* Font Definitions */
@font-face
{font-family:SimSun;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:ËÎÌå;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"\@SimSun&qu ......
java´ò°ü-exeÎļþ-×îÖÕÒÔsetupÐÎʽ·¢²¼µÄ½â¾öÖ®µÀ
java´ò°ü-exeÎļþ-×îÖÕÒÔsetupÐÎʽ·¢²¼µÄ½â¾öÖ®µÀ
Ê×ÏÈ£¬½«±àÒëºÃµÄ³ÌÐò´ò°ü³ÉjarÎļþ£¬È»ºó×ö³öexe£¬ÕâÑù´úÂë¾Í²»¿É¼ûÁË£»µ«ÊÇexeÎļþÔÚûÓа²×°jreµÄµçÄÔÉϲ»ÄÜÔËÐУ¬Èç¹ûÒªÇó¿Í»§ÔÙÈ¥°²×°jre ÉèÖû·¾³±äÁ¿ ¾Í²»ÑÅÁË¡£ÎÒÃÇÐèÒª½«jre´ò°ü¡£
Õ⼸²½²Ù×÷Í ......
¹ØÓÚjavaµÄ¼¯ºÏÀà,ÒÔ¼°HashMapÖÐSetµÄÓ÷¨!
2005-10-22 14:47:43 Sat | ÔĶÁ£¨547£©´Î
package com.tiantian;
import java.util.*;
public class JAVAContainer {
public static void main(String[] args) throws Exception {
//&nbs ......