Я ищу отзывы о дизайне, который я сделал для пользовательского класса адаптера в Java.Я пытаюсь создать элегантное решение для абстрактного класса адаптеров, которое можно расширить для создания уникальных адаптеров, которые могут подключаться к различным хранилищам данных.Вот некоторые требования
- Каждый адаптер должен реализовывать функцию инициализации, которая устанавливает соединение
- Каждый адаптер должен реализовывать функцию выполнения
- Функция инициализации должна бытьвызывается при создании нового экземпляра класса адаптера
- Каждый конструктор адаптера должен принимать объект конфигурации, который содержит всю информацию о соединении для этого конкретного адаптера.
- Конфигурации являются уникальными для адаптера, но я хочу, чтобы способ принудительно считывал конфигурацию и устанавливал переменную конфигурации либо на уровне абстрактного класса, либо на уровне базового класса.
Я также решил использовать фабричный шаблон при создании нового адаптера, вот мой код ниже:
BaseAdapter.java
public abstract class BaseAdapter {
private Configuration config;
/*
Default constructor
*/
protected BaseAdapter(Configuration config) {
this.config = config;
}
/*
Abstract method that will initialize adapter with
Configuration properties
*/
public abstract void initialize(Configuration config);
/*
Abstract method that will execute query
*/
public abstract void execute(String query);
ElasticSearchAdapter.java
public class ElasticSearchAdapter extends BaseAdapter {
public ElasticSearchAdapter(Configuration config) {
super(config);
initialize(config);
}
@Override
public void initialize(Configuration config) {
//initialization implementation
}
@Override
public void execute(String query) {
//execute query
}
}
BaseAdapterFactory.java
public class BaseAdapterFactory {
private static final String ES = "elasticsearch";
public static BaseAdapter getBaseAdapter(String type, Configuration config) {
if(ES.equals(type)) {
return new ElasticSearchAdapter(config);
}
else {
return null;
}
}
}
Мне было бы интересно, если бы там былоэто лучший способ разработать это на основе требований, изложенных выше.