软件设计模式与体系结构 下载本文

.

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)方法就可以。

-