Composition again…
In a previous blog post I’ve talked about that composition/delegation has some benefits over inheritance. Today I realized that I actually was right
As I was playing around in Nifty I’ve noticed that my TextElements don’t support coloured backgrounds. As a matter of fact the TextRenderer just didn’t support it. The first thought was to simply add this feature. But then I realized that the missing functionality was right there in front of me. I already implemented backgroundColor (and even backgroundImage) for Panels in the PanelRenderer.
So it occurred to me that I only have to combine them both in some nifty composition
and be done.
So I’ve just changed the Element class to support not only a single ElementRenderer but several! And by the way I discovered the “varargs declaration” in Java:
public Element( final String newId, final Element newParent, final ElementRenderer ... newElementRenderer) { ... }
You can use it this way:
Element element = new Element("myId", parent, new PanelRenderer(), new TextRenderer());
Nifty indeed ![]()