25 | 设计模式:每一种都是一个特定问题的解决方案
郑晔
你好,我是郑晔!
今天,我们来聊聊设计模式。作为一个讲软件设计的专栏,不讲设计模式有些说不过去。现在的程序员,基本上在工作了一段时间之后,都会意识到学习设计模式的重要性。
因为随着工作经验的增多,大家会逐渐认识到,代码写不好会造成各种问题,而设计模式则是所有软件设计的知识中,市面上参考资料最多,最容易学习的知识。
但是,你也知道,设计模式的内容很多,多到可以单独地作为一本书或一个专栏的内容。如果我们要在这个专栏的篇幅里,细致地学习设计模式的内容就会显得有些局促。
所以,这一讲,我打算和你谈谈如何理解和学习设计模式,帮助你建立起对设计模式的一个整体认知。
设计模式:一种特定的解决方案
所谓模式,其实就是针对的就是一些普遍存在的问题给出的解决方案。模式这个说法起源于建筑领域,建筑师克里斯托佛·亚历山大曾把建筑中的一些模式汇集成册。结果却是墙里开花墙外香,模式这个说法却在软件行业流行了起来。
最早是 Kent Beck 和 Ward Cunningham 探索将模式这个想法应用于软件开发领域,之后,Erich Gamma 把这一思想写入了其博士论文。而真正让建筑上的模式思想成了设计模式,在软件行业得到了广泛地接受,则是在《设计模式》这本书出版之后了。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
设计模式是软件开发中的重要概念,是针对特定问题提出的解决方案。学习设计模式需要理解每种模式解决的问题,而不是贪多求全。设计模式是设计原则在特定场景下的应用,遵循设计原则可以逐步推演出大多数设计模式。随着时代的发展,一些设计模式已经不再适用,甚至有了新的写法。文章还提到了一些设计模式在Java语言中的变化,以及一些程序库对设计模式的替代方案。总的来说,学习设计模式需要从设计原则开始,不局限于模式,同时也要关注语言发展对设计模式的影响。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《软件设计之美》,新⼈⾸单¥59
《软件设计之美》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(19)
- 最新
- 精选
- 桃子-夏勇杰从为了设计而设计,到为了解决问题而设计,这几乎是成熟程序员的必由之路。学费公司出,这也是我们这个行业的必由之路😂
作者回复: 我不得不说,你说得对😂
2020-07-31231 - giteebravo曾经买过一本《大话设计模式》,每晚必挑灯夜读之。然而现在,心中已无模式,只有原则。
作者回复: 恭喜上了一个台阶!
2020-08-05324 - 奔奔奔跑看老师的专栏太难受了!思考的乐趣与设计的美感,每每反思自己的代码,总感觉心痒痒的,恨不得把所有相关代码都看一遍,了解各种框架,各种中间件是怎么去做的,去实践的。
作者回复: 别控制,大胆去做!
2020-07-2446 - 猪肉怂之前就曾经叹服于一些设计模式,比如工厂模式,到了动态语言中会有那么简洁的实现,简洁到甚至感觉不到模式的存在,原来设计模式只是为了通往更好设计的解决方案。当语言的本身掣肘随着发展而被祛除,设计模式也就完成了它们的使命。 当一些设计模式最终更好的开发语汇所替换掉,模式背后的设计原则,将会永远存在下去。 这就是郑老师所讲的根基与枝叶的关系吧。
作者回复: 你的理解很到位
2021-06-031 - 佟宏元平时使用过单例,策略,观察者等模式,从一开始纠结于如何按照规定编写代码,到后面已经脱离了编码层面的使用,我总结出,学习设计模式,学习的不是如何编写代码,而是一种软件设计思想,比如什么场景使用策略模式,什么场景使用观察者模式,甚至是已经完全不体现在代码层面,而是对系统的功能的设计,对业务场景的梳理。所以我觉得设计模式最后的样子,是一种解决业务,设计软件的模型。
作者回复: 于是,你就升华了。
2020-11-211 - JanenesomeTemplate Method 这个模式用得比较多,因为只需要将不同的部分封装到子类,场景比较清晰。其他的设计模式就用得比较少。 这个专栏给出的原则挺多,准备一个一个来践行,因为一下子体会到全部有点难,得一边写代码一边对照思考,慢慢改变自己的编程思想。
作者回复: 可以用这些原则一个一个过一遍设计模式。
2020-10-241 - 木头发芽跟独孤九剑一个道理,剑式就那么九个,怎么解决敌人就看具体是什么问题,在这九式的指导下见招拆招就可以
作者回复: 是的,理解得越深入,运用得越纯熟。
2020-10-101 - 饭设计模式反复看过很多次,可能和我做Bs架构的管理系统有关,只用过单例,消费者,生产者,然后是简单工厂。其他没用过
作者回复: 还是有必要全面了解一下的。
2020-07-241 - escray那个《面向模式的软件架构》实在是太狠了,居然有 5 卷,并且还得了 Jolt 大奖。 这篇专栏可以作为学习设计模式的一个开篇词。 之前也学习过 23 中设计模式,但是在写程序的时候其实用的并不多,时间长了,连 23 个模式的名字都记不全。 有时候按照 SOLID 原则去重构一些代码,总感觉好像是对应了某一个设计模式,但是又似是而非,需要到隔壁专栏复习一下设计模式。 “看眼看模式”部分,讲到程序设计语言的发展使得一些模式有了新的写法,我有点好奇,在业界究竟有多少公司能够跟进语言的演变。
作者回复: 写代码很多时候,是一个人,或一个团队的事,整个行业的演变速度是非常慢的。
2020-09-27 - 苗感觉悟了;如果没有理解分离关注点和dip;很可能就在业务处理流程中直接调用 UserCollectorChannel的send方法了;都不会想到抽象出usersend接口。
作者回复: 有收获就没白学
2020-09-02
收起评论