在使用工厂模式的代码库中,抽象类被实例化为其成员方法的参数。如果抽象类不能被实例化,这个模式是如何使用它的?这样做有什么好处吗?
import java.io.IOException;
public abstract class abstractClass {
public void member_method(abstractClass t, int i) throws IOException {
// Do something
}
}
在使用工厂模式的代码库中,抽象类被实例化为其成员方法的参数。如果抽象类不能被实例化,这个模式是如何使用它的?这样做有什么好处吗?
import java.io.IOException;
public abstract class abstractClass {
public void member_method(abstractClass t, int i) throws IOException {
// Do something
}
}
您提供的代码示例实际上并不暗示任何类似工厂的行为。这个类是抽象的这一事实也不是那么重要。这是您的示例的更具体示例实现:
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 上定义的任何抽象方法,但它可以。如果是这样,那么它通常遵循“模板”编程模式。但是,我想不出一个使用模板并有一个采用抽象类型参数的方法的好例子。
由于这不是一种static
方法,因此您必须假设传递给 的member_method
实例与this
.
所以你显然可以有这个类的两个实例a
并b
以某种方式创建(即创建一个具体的子类)。所有这个方法说的是你可以做a.member_method(b);