В некоторых случаях, например, в шаблоне стратегии, я должен предоставить некоторый класс интерфейса по умолчанию.
В этом случае я обычно делаю конкретный класс интерфейса в другом Java-файле какниже.
public interface MyStrategy {
void doSomething();
}
public class DefaultMyStrategy implements MyStrategy {
@Override
public void doSomething() {
}
}
Но недавно я увидел некоторый код, который содержит анонимный класс в интерфейсе, и он выглядит следующим образом.
public interface MyStrategy {
MyStrategy DEFAULT = new MyStrategy() {
@Override
public void doSomething() {
}
};
void doSomething();
}
Какой из них лучше сделать по умолчаниюкласс?
На мой взгляд, MyStrategy strategy = MyStrategy.DEFAULT;
лучше, чем MyStrategy strategy = new DefaultMyStrategy();
.
Однако мне интересно, широко ли используется второй.