designpattern demos