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检查?
+1 Darron的回答。另外,一个风格问题:AbstractFactory不是抽象的,所以名称是误导性的。 – 2010-11-08 19:31:02