add a demo combining template method pattern and builder pattern.