在使用Factory Pattern的代码库中,抽象类被实例化为其成员方法的参数。如果无法实例化抽象类,那么这种模式如何使用呢?这样做有什么好处吗?
import java.io.IOException;
public abstract class abstractClass {
public void member_method(abstractClass t, int i) throws IOException {
// Do something
}
}
答案 0 :(得分: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上定义的任何抽象方法,但它可以。如果确实如此,则通常遵循“模板”编程模式。但是我想不出一个使用模板的好例子,并且有一个方法接受抽象类型的参数。
答案 1 :(得分:0)
由于这不是static
方法,因此您必须假设传递到member_method
的实例与this
不是同一个实例。
所以你显然可以以某种方式创建这个类a
和b
的两个实例(即创建一个具体的子类)。所有这些方法都说明你可以做a.member_method(b);