designpattern practice