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_method实例与this.

所以你显然可以有这个类的两个实例ab以某种方式创建(即创建一个具体的子类)。所有这个方法说的是你可以做a.member_method(b);

于 2013-05-24T16:57:11.273 回答