//抽象寶藏類
public abstract class Treature {
private Vector<Eudemon> ct=null;
//增加保護神
public abstract void addObserver(int n);
//刪除保護神
public abstract void deleteObserver(int n);
//通知保護神
public abstract void notifyObservers();
//探測寶藏是否改變
public abstract void hasChanged();
//標記寶藏狀態已更動方法
public abstract void setChanged();
//復位狀態變化標誌
public abstract void clearChanged();
//返回寶藏守護神數目
public abstract int countObserver();
}
//金子類
public class Gold extends Treature{
private String State="山洞";
private int servers=10;
private int gold=5;
private int cc=0;
public String getState() {
return State;
}
public void setState(String state) {
if(!state.equals(this.State))
{
this.notifyObservers();
}
}
@Override
public void addObserver(int n) {
System.out.println("添加"+n+"個金子的守護神");
servers=servers+n;
}
@Override
public void clearChanged() {
this.gold=5;
this.State="山洞";
this.hasChanged();
}
@Override
public int countObserver() {
return this.servers;
}
@Override
public void deleteObserver(int n) {
// TODO Auto-generated method stub
System.out.println("刪除"+n+"個金子守護神");
this.servers=this.servers-n;
}
@Override
public void hasChanged() {
System.out.println("已經有人動過金子了!");
Lion l=new Lion();
l.update();
this.setChanged();
}
@Override
public void notifyObservers() {
System.out.println("有人動了金子!");
this.hasChanged();
}
@Override
public void setChanged() {
// TODO Auto-generated method stub
this.cc++;
}
}
//抽象守護神類
public abstract class Eudemon {
public abstract void update();
}
//保護神類
public class Lion extends Eudemon{
@Override
public void update() {
System.out.println("我是芙蓉姐姐保護神,我要惡心死妳!");
}
}
//尼古拉斯。凱奇類
public class Cage {
public void touchTreatuer()
{
Gold gg=new Gold();
gg.setState("我家");
}
}
//測試類
import org.junit.BeforeClass;
import org.junit.Test;
public class Ceshi {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@Test public void inner()
{
Cage cg=new Cage();
cg.touchTreatuer();
}
}