http://www.riabook.cn/doc/designpattern/http://www.ibm.com/developerworks/cn/java/design/index.html#FACTOR19