Java – template method pattern with implementation specific parameter types
•
Java
I often encounter this situation when I want to use the template method mode, but the template method requires different types of parameters, as shown below:
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); }
It doesn't look very good One of the provided parameters must be null, and all services must implement virtual doprocess methods for other types Is there a better model? What do you do with this? I don't want to use constructors because these services are spring beans The same question applies to the strategic model
Solution
public abstract class AbstractFoo<T> {
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(); } }
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码