什么是代码架构(我对设计模式的理解)
设计模式,这是我听过最糟糕的翻译,这个名字对于程序员来说有点高高在上,难以理解,尤其是php,python,nodejs这些脚本语言的开发人员可能因为这个名字就忽视了设计模式的重要性。当然,除了名字以外,从更深层次,更具体来说,我觉得有三个原因:
- 不用设计模式也可以完成工作,很多时候反而更简单快速;
- 软件的世界快速迭代,很多设计模式有些过时了;
- 如果没有理解透彻一些设计模式,可能还存在过度设计的问题,拿着把锤子,看到哪里都是钉子。
但是用所谓‘简单’的方法去写的代码,业务一复杂之后,你就会发现改动之痛苦,改一个功能要看完所有流程,最后不得不重构,相信很多人都会有这个经历,这些就是设计模式解决的问题,但是精通了设计模式并不能解决所有问题,常常也要重构,设计模式绝对不是银弹。
设计模式的本质是什么
设计模式其实就是架构,实现一个模块或者功能有几种方法,前面的人总结了他觉得最优的方法,然后抽象出来成为一种模式,这就是设计模式。本质上这和架构没有什么区别。
设计模式和架构的区别
那架构和设计模式有没有什么区别呢,其实是有区别的,某种程度上可以这样理解:架构是从整个系统,更宏观的层面来总结的,而现在大家理解的设计模式,更多是从代码层面出发,或者框架的层面来总结的。但是这种区别并不是软件架构大师们主观的结果,这两个概念最开始是一个东西,但是随着软件复杂度的不断增加,演化成了两个概念。
更好的理解设计模式
我觉得对于设计模式的理解是把设计模式归并到架构的一部分,是架构的子集,重命名为代码架构,这样好理解很多。
本帖已被设为精华帖!
本帖由 Summer
于 6年前 加精
确实『设计模式』说到底都是在做『代码架构』的事情
很好的把我想表达而表达不出的意思表达出来了,点个赞,厉害。
@半醒的狐狸 感谢,确实觉得正确理解这个很重要。
@Summer 是啊,我觉得从理解这个概念的角度来翻译,而不是从字面意思翻译能帮助大家更好的认知。
高手都是把复杂的事情跟概念简单化并正确表达出来让人理解,牛逼了
@meism 你的回答就很牛逼
架构是道,设计模式是术,道恒在,而术常变。没必要拘泥于某些设计模式去写代码,合适的地方用合适的方式,设计模式的使用也不是机械的套用,领会精神,灵活使用即可。如同盖房子,如果只会搭个柴房,没必要用钢梁架构,但是如果是一个摩天大楼,那每个细节设计都需要参考前人的设计经验(设计模式),取其精华。
第三点,设计模式要理解透彻,不然会用错,所以学习路线是 学习设计模式->使用设计模式->过度使用设计模式->忘记设计模式