我正在开发基于Java EE的基于Web的应用程序。
我的问题:我正在创建BaseAPI
的实例并将其传递给名为BaseUtil
的实用程序类,如下所示:
package com ;
public class Test {
public static void main(String args[]) {
BaseAPI bApi = new BaseAPI();
BaseUtil.getData(bApi);
}
}
public class BaseUtil {
public static String getData(BaseAPI bapi) {
bapi.addAccountIdParameter("SIM1");
bapi.getData();
return null;
}
}
package com;
import java.util.HashMap;
public class BaseAPI {
HashMap<String, Object> params = new HashMap<String, Object>();
public void addAccountIdParameter(String value) {
addParameter("ID", value);
}
public void addParameter(String name, String value) {
if ((name != null) && (value != null)) {
params.put(name.trim().toLowerCase(), value.trim());
}
}
public String getData()
{
return "";
}
}
这很好用。如果这是一种有效的方法,请告诉我,否则会对任何地方产生负面影响?
答案 0 :(得分:2)
这是一种非常有效的方法,一般来说不会产生负面影响。但是,要了解它是否是API的最佳选择,需要更多信息。一个建议:
将BaseUtil类的构造函数设为private:
public class BaseUtil {
private BaseUtil(){}
...
}
如果它只是一个静态实用程序类,这将阻止您的其他类创建此类的对象。此外,如果您开始向此BaseUtil类添加字段,那么如果您的应用程序是多线程的,则需要开始考虑线程安全性。
答案 1 :(得分:1)
从运行时的角度来看,这种方法看起来很好,如果您提到这些方法,它不应该导致任何性能或内存问题。
从更一般的设计角度来看,它看起来很尴尬,我建议不要这样做。您的BaseAPI
类(以及已提示的名称)看起来像一个公共API,但在您的情况下,BaseAPI
实例也以参数的形式存储状态。 BaseAPI
类看起来更像是DAO,您可以在无状态的事情中轻松实现:
public class BaseAPI {
public String getData(Map<String, Object> params)
{
// Do your parameter mapping here, then fetch the data
return "";
}
}
或者,提供ID参数作为方法参数。
使用某些依赖注入机制(如 Spring )捆绑它,您的设计将更加清晰。