java – 具有特定于实现的参数类型的模板方法模式
发布时间:2020-12-15 08:42:04 所属栏目:Java 来源:网络整理
导读:当我想使用模板方法模式时,我经常遇到这种情况,但模板方法需要不同类型的参数,如下所示: public abstract class AbstractFoo { public void process(TypeA a,TypeB b) { //do common processing if (b == null) { doProcess(a); } else if(a == null) { doP
当我想使用模板方法模式时,我经常遇到这种情况,但模板方法需要不同类型的参数,如下所示:
public abstract class AbstractFoo { public void process(TypeA a,TypeB b) { //do common processing if (b == null) { doProcess(a); } else if(a == null) { doProcess(b); } } public abstract void doProcess(TypeA a); public abstract void doProcess(TypeB b); } 这看起来不太好.其中一个提供的参数必须为null,并且所有服务都必须为其他类型实现虚拟doProcess方法.这有更好的模式吗?你怎么处理这个?我不想使用构造函数,因为这些服务是spring bean.同样的问题也适用于战略模式. 解决方法public abstract class AbstractFoo<T> { public void process(T a) { //do common processing doProcess(a); } protected abstract void doProcess(T a); } public class Person extends AbstractFoo<Person> { @Override protected void doProcess(Person p) { p.draw(); } } public class Car extends AbstractFoo<Car> { @Override protected void doProcess(Car c) { c.draw(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |