Ano*_*non 0 java design-patterns factory
我目前正在使用我的工厂:
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");
}
}
Run Code Online (Sandbox Code Playgroud)
parseHeader()将返回AHeader或BHeader的实例,并在稍后的时间内请求AbstractContent.有一个更好的方法吗 ?躲开检查实例?
将以下代码添加到现有类:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
现在你可以调用h.parseContent().这称为多态性.