基本的に、インターフェイスの実装のみを提供するフレームワークをシミュレートするために、外部でオーバーライドできるクラスを作成することを自分自身に教えています。Hadoopが実際に使用していることに気付きました:
job.setMapperClass(FrameworkObject.class);
これを行うドライバークラスでは、以下のコードを変更してそれを行うのは簡単な変更ですか?
//----- locked framwork interface...
public interface FrameworkInterface {
public void PrintStuff();
}
//----- locked framwork factory class...
public class FrameworkFactory {
public static void doStuff(FrameworkInterface fi){
fi.PrintStuff();
}
}
//------------ my code that hooks into a framework...
public class FrameworkObject implements FrameworkInterface {
public FrameworkObject() {
// TODO Auto-generated constructor stub
}
@Override
public void PrintStuff() {
System.out.println("the implemented method...");
}
}
//------------ the framework driver I want to change
public class FrameworkDriver {
public static void main(String[] args){
FrameworkFactory.doStuff(new FrameworkObject()); // explicit ref to object
}
}