我正在寻找有关在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;
}
}
}
我很好奇是否有更好的方法可以根据上述要求进行设计。
答案 0 :(得分:1)
工厂模式是实现此目标的方法。您可能还希望探索该选项,以避免每次添加新适配器时都修改出厂设置。记住“开闭”原则:为扩展而打开,为修改而关闭。
您可以在class registration中使用工厂实现。