0

ファクトリ パターンを使用するコード ベースでは、抽象クラスはそのメンバー メソッドの引数としてインスタンス化されます。抽象クラスをインスタンス化できない場合、このパターンはそれをどのように使用していますか? そうすることの利点はありますか?

import java.io.IOException;
public abstract class abstractClass {

public void member_method(abstractClass t, int i) throws IOException {
// Do something 
}

}
4

2 に答える 2

1

あなたが提供したコード例は、実際にはファクトリのような動作を意味するものではありません。このクラスが抽象的であるという事実も、それほど重要ではありません。あなたの例のより具体的な実装例を次に示します。

public abstract class MyString {
    private String data;

    public MyString(String initialValue){
        data = initialValue;
    }

    public void append(MyString toAppend, int appendCount){
        for(int i = 0; i < appendCount; i ++){
            data = data + toAppend.data;
        }
    }
    public String toString(){
        return data;
    }
    public abstract notRelevantMethod();

}

このクラス (上記の例とよく似ていることを願っています) では、append メソッドを使用すると、MyString で呼び出しているメソッドに MyString の別のインスタンスを渡すことができます。私の例では、append メソッドは MyString で定義された抽象メソッドを使用していませんが、可能です。その場合、通常は「テンプレート」プログラミング パターンに従っています。ただし、テンプレートを使用し、抽象型の引数を取るメソッドを持つ良い例は思いつきませんでした。

于 2013-05-24T18:09:53.473 に答える
0

これはメソッドではないため、に渡されたインスタンスは と同じインスタンスではないstaticと想定する必要があります。member_methodthis

したがって、このクラスのインスタンスを 2 つ持つことができ、何らかの方法ab作成できます (具体的な子クラスを作成するなど)。このメソッドが言うのは、あなたができるということだけですa.member_method(b);

于 2013-05-24T16:57:11.273 に答える