Interface and Implementations with Separate Templates

81 Views Asked by At

I have a Java interface with several implementing classes. Each implementation class needs its own associated (sub)template. At runtime I add a collection (List) of objects implementing my interface to my ST. How can I have each object in that list rendered by the appropriate template?

Example code:

public interface foo {...}
public class bar implements foo {...}
public class baz implements foo {...}

I would like to have a top-level ST for the interface foo, and each concrete/implementing class has its own ST as follows,

foo.st
bar.st
baz.st

I would like to pass a List<foo>, which contains a mix of bar and baz instances, to the foo ST and have the foo ST call the appropriate sub-template (bar or baz, depending on the subtype) for each element of the list.

I suppose I could create a Map<String /* template name */, foo /* either bar or baz */>, but it feels like by doing so I'm leaking the fact that I'm using StringTemplate into my data model design.

Any suggestions?

0

There are 0 best solutions below