.
public static final String FEATURES = \ public String getName(){ }
public double getPrice(){
return NAME;
return PRICE; }
public String getDescription(){
return FEATURES; }
public void accept(Visitor v){
System.out.println(\ v.visitSoundBox (this); } }
2、添加GUI:
(1)String[] compParts={ \ \ \ \
-
.
(2)for(int k=11; k<17; k++) add(0, k, cParts[k]);
(3)else if (source == cParts[14])
states[14] = state;
else if (source == cParts[15]){ if(state == SELECTED){
cParts[1].setSelected(true); cParts[8].setSelected(true);
}
else if (state == DESELECTED){
cParts[1].setSelected(false); cParts[8].setSelected(false);
}
states[15]=state;
}
else if (source == cParts[16]){ if(state == SELECTED){
cParts[0].setSelected(true); for(int k=11; k<15; k++) cParts[k].setSelected(true); }
else if (state == DESELECTED){
-
.
(4)else if ((m==14) && (states[14] == SELECTED)) {
part = new SoundBox(); msg.add(\
cParts[0].setSelected(false); for(int k=11; k<15; k++) cParts[k].setSelected(false);
}
states[16]=state; }
}
3、添加Visitor:
public abstract void visitSoundBox (SoundBox e);
4、添加PriceVisitor:
public void visitSoundBox (SoundBox e){
price = e.getPrice();
partsPrices.add(new Double(price)); total += price;
}
5、添加PartsInfoVisitor:
public void visitSoundBox (SoundBox e){
partInfo = e.getDescription();
-
.
}
allOders = allOders + \
【实验结果】
【实验小结】
通过此次实验让我们更加深刻的理解了访问者模式,它在处理数据结构较稳定,但是作用于其上的操作需要经常变化的问题时时非常有效的,因此可以在不改变该结构体中的类的基础上定义一个新的操作,这个实验就是如此,我们只需要添加新的类,然后调用accept(pv)方法就可以。
-