/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
RequestTranslator gruTrans = getTranslator(new GRUReqTransCreator());
gruTrans.translate();
RequestTranslator sendOtpTrans = getTranslator(new SendOTPReqTransCreator());
sendOtpTrans.translate();
}
public static RequestTranslator getTranslator(ReqTransCreator creator) {
return creator.createTranslator();
}
}
abstract class RequestTranslator {
abstract void translate();
}
class GruRequestTranslator extends RequestTranslator {
@Override void translate() {
System.
out.
println("From GruTranslator"); }
}
class SendOTPRequestTranslator extends RequestTranslator {
@Override void translate() {
System.
out.
println("From SendOTPTranslator"); }
}
// Translator creator
abstract class ReqTransCreator {
abstract RequestTranslator createTranslator();
}
class GRUReqTransCreator extends ReqTransCreator {
@Override
RequestTranslator createTranslator() {
return new GruRequestTranslator();
}
}
class SendOTPReqTransCreator extends ReqTransCreator {
@Override
RequestTranslator createTranslator() {
return new SendOTPRequestTranslator();
}
}