https://www.zhihu.com/question/308850392 https://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html#