オブジェクトを生成し、すべてのパブリックメソッドを代行するファクトリクラスを実装しようとしています。Java - 呼び出しハンドラを作成しますか?
私はここで2つのメソッドを呼び出そうとしています。 1:すでに呼び出されたメソッド2:私のベースのメソッド。 どのように私はこれを達成することができますか?
public class LoggerFactory {
public LoggerFactory() {
}
// Clazz is always a class inheriting from Loggable
public Object newInstance(Class clazz) {
return Proxy.newProxyInstance(clazz.getClassLoader(), new Class[] {clazz}, handler);
}
private InvocationHandler handler = new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// Call logStartingTime on object
// Call invoked method on object
// Call logEndingTime on object
return null;
}
};
}
私の抽象クラス:
public abstract class Loggable {
void logStartingTime() {
log.info(“start time = ” + new Date());
// also log some info about the state of the object
}
void logEndingTime() {
log.info(“ending time = ” + new Date());
// also log some info about the state of the object
}
}
+1。具体的に言えば、 'Loggable'を基本クラスとして持つことはあまり意味がありません。あなたも含めたい他の構成可能な行動があったらどうなりますか? AOPはより良いアプローチのようです。 – Dan