クラスの 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 個あり、メイン/ベース クラスのメソッドの 1 つが呼び出されたときにのみ初期化したいと考えています。
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つ持つ必要があります。
では、これを行う「正しい」方法は何ですか?クラスが呼び出されると、1 つまたは 2 つのメソッドしか使用しない場合があるため、毎回すべてのサブクラスを初期化する必要はありません。