我正在尝试实现一个工厂模式,其中方法返回正确的对象。当调用工厂方法时,我的私有构造函数被调用,这会对该类的结果产生影响。
我将 print 语句放入构造函数中以查看它是否被调用,并且无论向工厂提供什么字符串,它都会导致调用。
public class ExcerptFilter implements TokenFilter
{
private boolean started;
private ExcerptFilter() {
start();
System.out.println("constructor called");
}
public static TokenFilter factory(String startTag, String stopTag) {
TokenFilter result;
if(startTag != null && startTag.trim().length() > 0){
if(stopTag != null && stopTag.trim().length() > 0) result = new ExcerptFilterStartAndStop(startTag, stopTag);
else result = new ExcerptFilterStartOnly(startTag);
}else{
if(stopTag != null && stopTag.trim().length() > 0) result = new ExcerptFilterStopOnly(stopTag);
else result = new ExcerptFilter();
}
return result;
}
工厂应该在 ExcerptFilter 中返回嵌套类的正确实例。它不应该对构造函数进行任何调用,除非 factory() 的 who 参数为零长度或 null。
叮当猫咪
相关分类