ロギングおよび例外処理とは別のロジックにこのテンプレートメソッドパターンを使用することができますか?「悪い習慣」ですか?テンプレートメソッドパターンを使用したロギングとロジックの分離
public abstract class Parent {
private final Logger log = LoggerFactory.getLogger(getClass());
public void eat() {
try {
doEat();
} catch (SomeException1 e) {
log.debug("some text");
throw new CustomException1();
}
}
protected abstract void doEat();
public void sleep() {
try {
doSleep();
} catch (SomeException2 e) {
log.debug("some text");
throw new CustomException2();
}
}
protected abstract void doSleep();
}
そして、私の子クラス:
public class Child extends Parent {
@Override
protected void doEat() {
//some logic
}
@Override
protected void doSleep() {
//some logic
}}
私は方法doEat()
とdoSleep()
の異なる実装を持っていないでしょう
は、例えば、私はこのコードを持っています。
私はそれが価値があるかどうか、それが「悪い習慣」であるかどうかを知りたいです。
ロギング横断的関心事であり、そのようなものとして、典型的には、[AOP(https://en.wikipedia.org/wiki/Aspect-oriented_programming)を使用して処理されます。 – jaco0646