Доброе утро. Шаг за шагом прохожу основные паттерны. Вот дошел черед и до адаптера.
Везде где я читал, сказано, что адаптировать можно:
1. Классы
2. Абстрактные классы
3. Интерфейсы.
Вопрос --- какой смысл адаптировать интерфейсы и абстрактные классы? Они же содержат только сигнатуры, без тел. И при вызове просто выбросит NullPointerException. Или я чего-то не понимаю?
P. S. Прикрепляю внизу код, как пример адаптации интерфейсов.
P. P. S. Знаю, что есть default методы. Но они скорее исключение, ведь не будут же создавать интерфейс ради default методов? Или будут?
// интерфейсы для адаптации
public interface DataBase {
void update();
void delete();
void save();
void load();
}
public interface JavaApp {
void updateObject();
void deleteObject();
void saveObject();
void loadObject();
}
// адаптер
public class JavaToDataBase implements JavaApp {
private DataBase dataBase;
@Override
public void deleteObject() {
dataBase.delete();
}
@Override
public void saveObject() {
dataBase.save();
}
@Override
public void loadObject() {
dataBase.load();
}
@Override
public void updateObject() {
dataBase.update();
}
}
// тест
public class Main {
public static void main(String[] args) {
JavaToDataBase base = new JavaToDataBase();
base.deleteObject();
base.updateObject();
base.loadObject();
base.saveObject();
}
}