请教一个关于组合模式的问题

07-03-23 irix
个人觉得组合模式适合于行为的组合,而对于组合模式中的属性一直没有早点好的解决方法,我拿信令的编解码来举例:

所有的信令都是一些子结构组合而成的,而所有的子结构都是一种TLV结构(type,length,value),当然,子结构也可是别的一种结构的组合。所有的信令都有encode和decode操作,用组合模式(用XML来定义某个信令由哪些结构组成)来解决很不错,但是,编码和解码后的属性值如何来获取和设置呢?

interface Msg {

public void encode();

public void decode();

}

class baseMsg1 extends Msg{

int mgsType;

int value1;

}

class baseMsg2 extends Msg{

int mgsType;

int value2;

}

class CompositeMsg extends Msg{

int msgType;

List list = new ArrayList();

public void addMsg(Msg msg){

}

....

}

假使一条信令由baseMsg1和baseMsg2组成,那么如何获取得到baseMsg1中的value1和baseMsg2中的value2?

         

banq
2007-03-23 14:23
>编码和解码后的属性值如何来获取和设置呢?

和encode和decode操作一样啊,进行一次统计查询,或者作为encode和decode操作结果返回。

irix
2007-03-23 15:16
因为value1,value2都是各个子类的变量值,而不是所有的类其变量都是名字相同,如果都同一个变量名(含义相同)进行遍历是可以的。

通过encode和decode返回一个值还行,但对于多个就无法计算了,即使返回一个的话,这个返回的值怎么保存?

猜你喜欢