This is a tech blog
JfreeCharts is a third party open source api to generate api.
Below is the low level work flow
When single task can be done by multiple groups/family of objects and decision is taken at the runtime.