Чтобы уменьшить количество NCSS класса (~ 850), я разделил все методы на свои собственные классы и упростил работу, расширяя абстрактный класс, который содержит весь помощник функции.Lazy инициализация подкласса
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);
}
}
Я попытался создать функцию Initialise в классе MyBaseClass, который принимает подтип в качестве параметра и создать объект на основе своего класса:
private void initAccount() {
if (ad == null) {
ad = new AccountData();
}
}
, но это некрасиво, и я должен иметь один на суб- класс.
Итак, что такое «правильный» способ сделать это? Иногда, когда класс вызывается, мы будем использовать только один или два метода, поэтому я не хочу каждый раз инициализировать все подклассы.
Не могли бы вы расширить немного больше? Вы имеете в виду, что если бы я сделал методы в «AccountData» 'public static', тогда я мог бы просто ссылаться на них в MyBaseClass (при условии, что я их импортировал)? И, извините, но да, есть экземпляры данных в классах, и они не могут быть статическими (но это моя ошибка, если вы не указали это заранее) – Omertron