Source: http://www.uml.org.cn/c /pdf/designpatterns.pdf