我有两个对象放在一起,用Java在构建器模式中创建另一个对象。一个是PayloadData抽象类对象,另一个是HeaderData对象(不是抽象)。它们从名为MessageElement的接口继承。但是,我需要PayloadData对象将其大小(我已经在Payload中创建了一个存储此变量的变量的代码)传递给Header对象。我怎样才能做到这一点? PayloadData是一个抽象对象,被“Type”Payload(有效负载存储的数据类型)覆盖。
HeaderData有一种计算整体邮件大小的方法:
public int messageSize() //This method is finsihed already, but needs to be fixed.
{
return PayloadData.elementSize() + 16; //Something here need to be fixed.
}
但这似乎不起作用。
PayloadData具有此方法(由继承自它的类重写:
public int elementSize() {
// TODO Auto-generated method stub
return 0;
}
具体对象具有:覆盖它:
@Override
public int elementSize() //This is the one override that I think will be needed. Need to figure out how to pass this to
//HeaderData, as right now it is not accepting it.
{
return (48 + 184 * tracksInMessage());
}
我想我需要修改我正在使用的构建器模式让HeaderData访问elementSize,但是我应该怎么做呢?
请记住,最终构建了一个类,在这种情况下是一个Message类,它是从HeaderData类和从PayloadData继承的类汇编而来的,还有一个构建器类和一个使用构建器类的类。创建消息对象。
这是我遵循的模式,我用PayloadData替换了Burger并用HeaderData替换了ColdDrink但是它成了一个具体的对象:
http://www.tutorialspoint.com/design_pattern/builder_pattern.htm