一般开始学习一个新的知识前,我会思考为什么要学,他对于我的工作和生活有什么帮助?
对于设计模式,主要是为了应对代码难以维护的问题。比如结构混乱,复用性太低,或者一个新需求需要改很多旧代码。
那么,什么是好的软件设计?
高内聚,低耦合
好维护,好复用
什么是垃圾的设计?
- 新需求需要改的地方很多,甚至要重写。
- 改一个地方发现牵一发而动全身,根本不敢改。
- 全是if else ,要逐步去加判断。
- 让调用者去关心实现逻辑。也就是我用一个方法或者类,还要把这个类理解一遍。
总体的思想:
抽象、复用、单一职责。
其实学习设计模式很简单,但是用好它很难。什么时候该用什么样的模式,是否滥用了,是否让我的维护越变越难了?
对于这样的问题,我是这样看待的:
软件设计复杂性的根本问题:需求变化。
首先要了解产品的走向,简要分析下这个需求可能会怎么变。然后尽可能地增加复用性。
然后开始思考设计模式。
最后回想,这样是变简单了,还是变复杂了?
比如一个很简单的功能,统计某个接口请求次数。
如果以后基本不可能改了,那就直接一个方法就完了,不用想太多。
如果感觉以后可能要多个接口,那就考虑一下设计模式,以后增加接口不用改这一版的代码。
如果感觉以后要做统计分析,表的设计也要优化一下。
如果感觉这个量很大很大,是不是要分一下表。
总结
最后,凡事都有度,别过于纠结于模式,核心是为了更快地应对需求的变化。
我们从一味图快中走出来,能抽象则抽象,能复用则复用,都是为了以后改起来更方便。
如果你还有一颗热爱编程的心,不要停止学习,如果一直图快,你的技术不会进步的,也就不可能跳出这个水平圈,就会一直在还技术债,最后感觉做不下去了。
学习不会短期内提高你的工资,甚至会让你更累,但是会为你的未来种下一颗种子,总有一天会发芽的。