public class Converter
{
private Logger logger = Logger.getLogger(Converter.class);
public String convert(String s){
if (s == null) throw new IllegalArgumentException("input can't be null");
logger.debug("Input = " + s);
String r = s + "abc";
logger.debug("Output = " + s);
return r;
}
public Integer convert(Integer s){
if (s == null) throw new IllegalArgumentException("input can't be null");
logger.debug("Input = " + s);
Integer r = s + 10;
logger.debug("Output = " + s);
return r;
}
}
上述2種方法非常相似,所以我想創建一個模板來做類似的事情,並將實際的工作委託給approriate類。但我也想在不改變模板的情況下輕鬆擴展此框架工作。 舉例:java模板設計
public class ConverterTemplate
{
private Logger logger = Logger.getLogger(Converter.class);
public Object convert(Object s){
if (s == null) throw new IllegalArgumentException("input can't be null");
logger.debug("Input = " + s);
Object r = doConverter();
logger.debug("Output = " + s);
return r;
}
protected abstract Object doConverter(Object arg);
}
public class MyConverter extends ConverterTemplate
{
protected String doConverter(String str)
{
String r = str + "abc";
return r;
}
protected Integer doConverter(Integer arg)
{
Integer r = arg + 10;
return r;
}
}
但是,這並不行。任何人都可以建議我一個更好的方法來做到這一點?我想實現兩個目標: 1.一個可擴展的模板,爲我做所有類似的工作。 2.我最大限度地減少擴展類的數量。
謝謝,
看看[泛型]( http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf)。 – 2011-01-09 22:51:51