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

个人觉得组合模式适合于行为的组合,而对于组合模式中的属性一直没有早点好的解决方法,我拿信令的编解码来举例:
所有的信令都是一些子结构组合而成的,而所有的子结构都是一种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?

>编码和解码后的属性值如何来获取和设置呢?
和encode和decode操作一样啊,进行一次统计查询,或者作为encode和decode操作结果返回。

因为value1,value2都是各个子类的变量值,而不是所有的类其变量都是名字相同,如果都同一个变量名(含义相同)进行遍历是可以的。
通过encode和decode返回一个值还行,但对于多个就无法计算了,即使返回一个的话,这个返回的值怎么保存?