У меня есть несколько очень похожих методов, за исключением 1 строки в каждом методе. Я пытаюсь избежать дублирования кода и применять хорошие практики в своем коде, но я не эксперт по OOP. Оба метода идентичны, за исключением одного вызова:
Например:
classa. java
public static void updateTable() throws Exception {
List<T> newSchema = AvroToHive.generateSchema(...);
...
}
classb. java
public static void updateTable() throws Exception {
List<T> newSchema = AWSGlue.generateSchema(...);
...
}
Я бы хотел переместить метод updateTable()
в другой общий класс и избегать использования подобных методов в моем проекте.
Как правильно избегать этого? Если я напишу интерфейс типа «Metastore» с методом generateSchema
, внедрите его в классы AvroToHive / AWSGlue и передайте в качестве параметра, например:
public static void updateTable(Metastore metastore) throws Exception {
List<T> newSchema = metastore.generateSchema(...);
...
}