gpt4 book ai didi

java工厂模式问题

转载 作者:行者123 更新时间:2023-12-01 17:38:16 25 4
gpt4 key购买 nike

我目前正在使用我的工厂,如下所示:

public class AbstractFactory
{
public static AbstractHeader parseHeader(File file)
{
if(AFactory.canRead(file))return AFactory.parseHeader(file);
if(BFactory.canRead(file))return BFactory.parseHeader(file);

throw new UnsupportedOperationException("File ["+file+"] not supported");
}

public static AbstractContent parseContent(AbstractHeader h)
{
if(h instanceof AHeader){
return AFactory.parseContent((AHeader) h);
}
if(h instanceof BHeader){
return BFactory.parseContent((BHeader) h);
}
throw new UnsupportedOperationException("Header not supported");
}
}

parseHeader() 将返回 AHeader 或 BHeader 的实例,稍后将请求 AbstractContent。有一个更好的方法吗 ?摆脱instanceof检查?

最佳答案

将以下代码添加到现有的类中:

public abstract class AbstractHeader {
abstract AbstractContent parseContent();
}

public class AHeader extends AbstractHeader {
public AbstractContent parseContent() {
return AFactory.parseContent((AHeader) h);
}
}

public class BHeader extends AbstractHeader {
public AbstractContent parseContent() {
return BFactory.parseContent((AHeader) h);
}
}

现在您只需调用 h.parseContent() 即可。这称为多态性。

关于java工厂模式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4126702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com