设计模式参考 https://www.cnblogs.com/zuoxiaolong/p/pattern26.html http://laijianfeng.org/ https://mp.weixin.qq.com/s/QWM079Z_zoU_2WxsMxw48g