对软件设计模式的理解和应用,基本上可以算做初级研发工程师和高级研发工程师的分水岭。我在面试时很喜欢问候选人对设计模式的理解,以及实际应用情况,大部分候选人都能回答单例,工厂等,再多问几句,就惨不忍睹。其实也能理解,这些内容对于初学者而言,基本只能靠死记硬背,记不长久。今天聊聊我理解的设计模式,在支付系统经常用到的场景,以及容易混淆的点,里面讲到的概念可能和一些权威的论述有所出入。下面的内容全部源自我这么多年所写代码的抽象总结,和以前一样,也不可避免会夹杂一些我个人不成熟的见解,请各位以“取其精华,去其糟粕”的精神辩证地看待此文内容。