add some design pattern demos