多米诺骨牌的例子
本人初学设计模式,在这里用观察者模式实现了多米诺骨牌的模拟,请大家多多指点。
import java.util.Observable;
import java.util.Observer;
// 每一张牌对前一张牌来说是观察者对象,
// 对后一张牌来说是主题对象。
public class Domino extends Observable implements Observer
{
private int domino_no;
public Domino( int no ){
domino_no = no;
}
public synchronized void update( Observable o, Object obj ){
if( o instanceof Domino ){
System.out.println( o+ " crashed "+ this );
fall();
}
}
public synchronized void fall(){
setChanged();
System.out.println( this+ " falling down" );
notifyObservers();
}
// 设置当前的多米诺牌在domino的后面
public synchronized void setAfter( Domino domino ){
domino.addObserver( this );
}
public String toString(){
return ( "Domino "+ domino_no );
}
public static void main( String[] args ){
Domino[] dominoes = new Domino[10];
for( int i = 0; i < 10; ++i ){
dominoes = new Domino( i );
if( i > 0 ){
dominoes.setAfter( dominoes[i-1] );
}
}
dominoes[0].fall();
}
}