若干年前,看到同事的桌上放了本《设计模式》,只翻看了一下目录就觉得这个东西高深,拉轰!于是借来粗看了一遍,大体上知道了设计模式这个概念。后来隔了几年做C#,买了一本C#的设计模式的书,从头到尾每个模式仔仔细细看了一下,确实被这种成体系的设计手段震惊到。不过可能因为我有过和项目经理产品经理深度合作的经历,我并不期盼在产品设计之初先找到与之符合的设计模式,因为需求在变,而且会一直变下去。慢慢地,代码写多了,也就觉得模式这个东西,无须特意去匹配,自然而然就会像那样去设计。
那么,是不是还要鼓励软件人员学习设计模式呢?我觉得还是需要的,原因有三:
- 学习设计模式其实是学习一种思维方式,即使不能达到高屋建瓴运用自如,也可以开阔视野触类旁通。
- 吸收有价值的经验,学习如何重构代码,让你在着手修改别人的“烂”代码的时候不至于改出同样的“烂”代码。
- 帮助你一眼看穿哪些人在用设计模式装逼。
因为有了第三条,所以你在使用的时候,会避免为了使用而使用。设计模式本身还是相对复杂的,在什么样的情况下应该作出什么样的设计,绝对不能生搬硬套。滥用错用,还不如不用。尤其在团队成员水平层次不齐,模块之间需要紧密配合的场景下,我更建议写出逻辑清晰可读性好的代码而不是复杂晦涩的代码。