Java的实例化课程很便宜。如果这些课程没有在其作品中做任何实质性的事情,那就做
public String getAccount(String sessionId) {
AccountData ad = new AccountData();
return ad.getAccount(String sessionId);
}
不要优化在哪里不是内部的。在之前介绍您的代码。您可能会感到惊讶您的假设有多错误(我知道我很多次)。
题
为了减少我的NCSS计数(〜850),我已经将所有方法分为他们自己的类并使事情变得更容易,我扩展了一个具有所有辅助功能的抽象类。
AbstractMethod.class
public class AbstractMethod {
protected String requestWebPage(URL url) {
// download a webpage as a string
}
}
Example "account" subclass
public class AccountData extends AbstractMethod {
public String getAccount(String sessionId){
String webPage = requestWebPage("http://google.com/"+sessionId);
system.out.println(webPage);
return webPage;
}
}
我有大约10个方法类,只想在主/基类中的一种方法中初始化它们:
public class MyBaseClass() {
private static AccountData ad;
public MyBaseClass() {
ad = new AccountData(); // Is there a better way?
}
public String getAccount(String sessionId) {
return ad.getAccount(String sessionId);
}
}
我试图在Mybaseclass类中创建一个初始函数,该功能接受子类型作为参数,并基于其类创建对象:
private void initAccount() {
if (ad == null) {
ad = new AccountData();
}
}
但这很丑陋,我必须每个子类有一个。
那么,这样做的“正确”方法是什么?有时,当称呼该类时,我们只会使用1或2种方法,因此我不想每次都必须初始化所有子类。
解决方案 2
Java的实例化课程很便宜。如果这些课程没有在其作品中做任何实质性的事情,那就做
public String getAccount(String sessionId) {
AccountData ad = new AccountData();
return ad.getAccount(String sessionId);
}
不要优化在哪里不是内部的。在之前介绍您的代码。您可能会感到惊讶您的假设有多错误(我知道我很多次)。
其他提示
在我看来,您真正想要的是使用静态方法而不是抽象的助手课程,也许 import static
.
这样,按照您的意愿,定义这些方法的类只有在实际调用这些方法后才初始化。
通常,您也不会将继承结构限制在方法恰好定义的位置。
当然,这是假设您没有为这些方法使用任何实例数据;但是从您的示例代码的外观看来,这似乎不是那样。