Source: https://www.uml.org.cn/c /pdf/DesignPatterns.pdf