使用构建器模式时,有没有办法将数据从用于构建的对象之一传递到另一个对象?

时间:2016-01-27 19:03:55

标签: java inheritance design-patterns builder

我有两个对象放在一起,用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

0 个答案:

没有答案