1

我正在开发一个基于 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 "";
    }

}

这工作正常。请让我知道这是否是一种有效的方法,或者它会在任何地方产生任何负面影响?

4

2 回答 2

2

这是一种完全有效的方法,通常不会产生负面影响。但是,需要更多信息才能了解它是否是您 API 的最佳选择。一项建议:

将 BaseUtil 类的构造函数设为私有:

public class BaseUtil {
    private BaseUtil(){}
    ...
}

如果它只是一个静态实用程序类,这将阻止您的其他类创建此类的对象。此外,如果您开始向此 BaseUtil 类添加字段,则如果您的应用程序将是多线程的,则需要开始考虑线程安全性。

于 2013-02-18T14:42:55.027 回答
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 之类的依赖注入机制捆绑在一起,您的设计将更加简洁。

于 2013-02-18T14:45:46.173 回答