У меня есть несколько классов, где у меня есть общедоступные методы настройки, которые я хочу применить.Для простых вещей, таких как сеттеры, лучше ли использовать интерфейс или абстрактный класс?
можно либо определить сеттер явно с abstract
класса, а затем продлить этот класс, или я могу реализовать interface
. Но с interface
мне пришлось бы писать метод setter снова и снова, что, по-видимому, нарушает принцип DRY.
public abstract class AbstractParent {
int value;
protected void setValue(int value) {
this.value = value;
}
}
против
public interface MyInterface {
void setValue(int value);
}
Когда имеет смысл использовать, какой подход?
Если вам приходится писать одно и то же снова и снова, нет смысла делать его абстрактным. Определите его в суперклассе, и если он изменится в определенном подклассе, просто переопределите его. – Gendarme
Разве это не значит, что я должен * сделать это абстрактным классом? Определите сеттер в абстрактном классе (используя 'protected'), а затем переопределите его, если я захочу? Я не говорю, чтобы сделать абстрактные методы setter абстрактным классом - это в основном то же самое, что использовать интерфейс, который является другой частью моего вопроса для начала. –
Я добавил код, чтобы уточнить –