不知道是不是这个意思:
package cage;
import treature.Diamond;
import treature.Gold;
import treature.Treature;
import eudemon.Eudemon;
import eudemon.Lion;
import eudemon.Tiger;
public class Cage {
public void touchTreature(Treature t){
t.setChanged();
}
public static void main(String[] args) {
Cage cage = new Cage(); //新建一个凯奇对象;
Treature gold = new Gold(); //新建一个黄金对象;
Treature diamond = new Diamond();//新建一个钻石对象;
Eudemon tiger = new Tiger(); //新建一个老虎对象;
Eudemon lion = new Lion(); //新建一个狮子对象;
gold.addObserver(tiger); //为黄金添加守护神
gold.addObserver(lion);
diamond.addObserver(tiger); //为钻石添加守护神
cage.touchTreature(gold); //凯奇动了黄金!
cage.touchTreature(diamond); //凯奇动了钻石!
}
}
package eudemon;
public interface Eudemon {
public void update();
}
package treature;
import java.util.Vector;
import eudemon.Eudemon;
public abstract class Treature {
private String state = "N";
private Vector Obs = new Vector();
public void addObserver(Eudemon e) {
Obs.add(e);
}
public void deleteObserver(Eudemon e) {
Obs.remove(e);
}
public void notifyObservers() {
if(Obs.size() > 0) {
for(int i = 0; i < Obs.size(); i++) {
((Eudemon)Obs.get(i)).update();
}
} else {
}
}
public boolean hasChanges() {
if(state.equalsIgnoreCase("N")){
return false;
} else {
return true;
}
}
public void setChanged() {
if(state.equalsIgnoreCase("N")){
state = "Y";
} else {
state = "N";
}
notifyObservers();
}
public void clearChanged() {
state = "N";
}
public int countObserver() {
return Obs.size();
}
}
package eudemon;
public class Lion implements Eudemon {
public void update() {
System.out.println("我是狮子,宝藏状态已经变动!");
}
}
package eudemon;
public class Tiger implements Eudemon {
public void update() {
System.out.println("我是老虎,宝藏状态已经变动!");
}
}
package treature;
public class Diamond extends Treature {
}
package treature;
public class Gold extends Treature {
}