1.方法嵌套实现方法的重载:
public class EventBuilder {
/**
* Instantiate an Event instance based on the provided body and headers.
* If <code>headers</code> is <code>null</code>, then it is ignored.
* @param body
* @param headers
* @return
*/
public static Event withBody(byte[] body, Map<String, String> headers) {
Event event = new SimpleEvent();
if(body == null) {
body = new byte[0];
}
event.setBody(body);
if (headers != null) {
event.setHeaders(new HashMap<String, String>(headers));
}
return event;
}
public static Event withBody(byte[] body) {
return withBody(body, null);
}
public static Event withBody(String body, Charset charset,
Map<String, String> headers) {
return withBody(body.getBytes(charset), headers);
}
public static Event withBody(String body, Charset charset) {
return withBody(body, charset, null);
}
}
2.序列器这种适合作为成员变量存在在读写类中,并不适合根据序列器定义不同读写类。
这样reader、writer这种类的基本信息不至于反复定义,序列器只需要做序列文本的工作就可以了。
public class ReliableSpoolingFileEventReader implements ReliableEventReader { private static final Logger logger = LoggerFactory .getLogger(ReliableSpoolingFileEventReader.class); static final String metaFileName = ".flumespool-main.meta"; private final File spoolDirectory; private final String completedSuffix; private final String deserializerType; private final Context deserializerContext; private final Pattern ignorePattern; private final File metaFile; private final boolean annotateFileName; private final boolean annotateBaseName; private final String fileNameHeader; private final String baseNameHeader; private final String deletePolicy; private final Charset inputCharset; private final DecodeErrorPolicy decodeErrorPolicy; private final ConsumeOrder consumeOrder; private EventDeserializer des = currentFile.get().getDeserializer(); }
3.