这是我的一段代码,程序报错:
C:\Documents and Settings\cool\桌面\ObseverDesignPattern.java:13: <identifier> expected
subject.add ( o1 );
                    ^
C:\Documents and Settings\cool\桌面\ObseverDesignPattern.java:13: package subject does not exist subject.add ( o1 );但是我却不知道,改什么地方,请哪位大虾指点一下呀!
以下是我的源代码:
package DesignPattern;import java.util.*;public class ObseverDesignPattern{
//这是一个观察者模式的程序框架
ConcreteSubject subject = new ConcreteSubject ();
ConcreteObsever o1 = new ConcreteObsever ( "Tom", subject );
ConcreteObsever o2 = new ConcreteObsever ( "Jack", subject );
ConcreteObsever o3 = new ConcreteObsever ( "Black", subject ); subject.add ( o1 );
//subject.add ( o2 );
//subject.add ( o3 );
/*/
subject.setState ( true );
subject.notifyObsever (); subject.setState ( true );
subject.notifyObsever (); subject.setState ( false );
subject.notifyObsever ();
*/
}abstract class Subject{
private ArrayList obsevers = new ArrayList(); public void add ( Obsever obsever ){
obsevers.add ( obsever );
} public void remove ( Obsever obsever ){
if ( obsevers.contains ( obsever) )
obsevers.remove ( obsever );
} public ArrayList getObsevers (){
return obsevers;
} public abstract void notifyObsever ();
}class ConcreteSubject extends Subject{
private boolean state = false; public void notifyObsever (){
Iterator iterator = super.getObsevers ().iterator ();
while ( iterator.hasNext () ){
Obsever o = (Obsever)iterator.next ();
o.update ();
}
} public void setState ( boolean state ){
this.state = state;
} public boolean getState (){
return state;
}
}abstract class Obsever{
public abstract void update();
}class ConcreteObsever extends Obsever{
private String name;
private boolean state;
private ConcreteSubject subject; ConcreteObsever ( String name, ConcreteSubject subject ){
this.name = name;
state = false;
this.subject = subject;
} public String getName (){
return name;
} public void update (){
if ( state != subject.getState ())
System.out.println ( "The obsever " + getName() + " has been updated" );
else
System.out.println ( "The obsever " + getName() + " has not been changed" );
}
}

解决方案 »

  1.   

    ConcreteSubject 类下面有add方法吗????
      

  2.   

    public class ObseverDesignPattern{
    //这是一个观察者模式的程序框架
    ConcreteSubject subject = new ConcreteSubject ();
    ConcreteObsever o1 = new ConcreteObsever ( "Tom", subject );
    ConcreteObsever o2 = new ConcreteObsever ( "Jack", subject );
    ConcreteObsever o3 = new ConcreteObsever ( "Black", subject ); subject.add ( o1 );   // 1、这边肯定是错的
     .....说明:声明ObseverDesignPattern类,无非是声明属性和方法,哪里有调用方法的.你可以把位置 1 放在构造函数中,或者它的方法中