public interface Payload {
String message();
}
public class SimplePayload implements Payload {
public String msg;
public SimplePayload(final String msg) {
this.msg = msg;
}
@Override
public String message() {
return msg;
}
}
public class CompositePayload implements Payload {
private final List<Payload> l = new LinkedList<Payload>();
public void addPayload(final Payload p) {
l.add(p);
}
@Override
public String message() {
final StringBuilder sb = new StringBuilder("Composite: ");
for (final Payload p : l) {
sb.append(p.message());
sb.append("\n");
}
return sb.toString();
}
}