Jak to zrobić ładnie ?
Kontekst: klasy implementowane z tego interfejsu będą zasilały bibliotekę templejtową (akurat StringTemplate, ale ztcw wszystkich dotyczy)
Biblioteka tego typu oczekuje propertisów w konwencji beanowej getXxxxxxxx
Nie uwzględnia Optionali, czysty tradycyjny null pozwala zrobić generowanie warunkowe.
Przerabiamy >15 letni kod z javy przed 8 i Velocity, która generuje HTMLki.
W generowanej tabelce HTML jest opcjonalny element caption
- opcjonalność pomyślałem wyrazić jako Optional, i to mi się podoba, klient tego interfejsu wypełni implementację, lub nie.
Nie podoba mi się metoda o prefiksie get, konieczna ze względu na bibliotekę - zakaz jej implementowania bym wyraził przez final
, ale nie jest dopuszczalne.
public interface ITableModel<T, C extends IColumnHeader> {
...
default public Optional<String> someCaption() { return Optional.empty(); }
/*final*/ default String getCaption() { return someCaption().isPresent()? someCaption().get() : null;
}
PS. To początek, ale bardzo mi się podoba "matematyczna" wręcz czystość modelu StringTemplate - velocity pozwalała na architektoniczne syfki, setowanie z templete, "naprawianie" niedostatków modelu itd...