软件设计之美
郑晔
开源项目 Moco 作者
19890 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
软件设计之美
15
15
1.0x
00:00/00:00
登录|注册

25 | 设计模式:每一种都是一个特定问题的解决方案

你好,我是郑晔!
今天,我们来聊聊设计模式。作为一个讲软件设计的专栏,不讲设计模式有些说不过去。现在的程序员,基本上在工作了一段时间之后,都会意识到学习设计模式的重要性。
因为随着工作经验的增多,大家会逐渐认识到,代码写不好会造成各种问题,而设计模式则是所有软件设计的知识中,市面上参考资料最多,最容易学习的知识。
但是,你也知道,设计模式的内容很多,多到可以单独地作为一本书或一个专栏的内容。如果我们要在这个专栏的篇幅里,细致地学习设计模式的内容就会显得有些局促。
所以,这一讲,我打算和你谈谈如何理解和学习设计模式,帮助你建立起对设计模式的一个整体认知。

设计模式:一种特定的解决方案

所谓模式,其实就是针对的就是一些普遍存在的问题给出的解决方案。模式这个说法起源于建筑领域,建筑师克里斯托佛·亚历山大曾把建筑中的一些模式汇集成册。结果却是墙里开花墙外香,模式这个说法却在软件行业流行了起来。
最早是 Kent Beck 和 Ward Cunningham 探索将模式这个想法应用于软件开发领域,之后,Erich Gamma 把这一思想写入了其博士论文。而真正让建筑上的模式思想成了设计模式,在软件行业得到了广泛地接受,则是在《设计模式》这本书出版之后了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

设计模式是软件开发中的重要概念,是针对特定问题提出的解决方案。学习设计模式需要理解每种模式解决的问题,而不是贪多求全。设计模式是设计原则在特定场景下的应用,遵循设计原则可以逐步推演出大多数设计模式。随着时代的发展,一些设计模式已经不再适用,甚至有了新的写法。文章还提到了一些设计模式在Java语言中的变化,以及一些程序库对设计模式的替代方案。总的来说,学习设计模式需要从设计原则开始,不局限于模式,同时也要关注语言发展对设计模式的影响。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《软件设计之美》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(19)

  • 最新
  • 精选
  • 桃子-夏勇杰
    从为了设计而设计,到为了解决问题而设计,这几乎是成熟程序员的必由之路。学费公司出,这也是我们这个行业的必由之路😂

    作者回复: 我不得不说,你说得对😂

    2020-07-31
    2
    31
  • giteebravo
    曾经买过一本《大话设计模式》,每晚必挑灯夜读之。然而现在,心中已无模式,只有原则。

    作者回复: 恭喜上了一个台阶!

    2020-08-05
    3
    24
  • 奔奔奔跑
    看老师的专栏太难受了!思考的乐趣与设计的美感,每每反思自己的代码,总感觉心痒痒的,恨不得把所有相关代码都看一遍,了解各种框架,各种中间件是怎么去做的,去实践的。

    作者回复: 别控制,大胆去做!

    2020-07-24
    4
    6
  • 猪肉怂
    之前就曾经叹服于一些设计模式,比如工厂模式,到了动态语言中会有那么简洁的实现,简洁到甚至感觉不到模式的存在,原来设计模式只是为了通往更好设计的解决方案。当语言的本身掣肘随着发展而被祛除,设计模式也就完成了它们的使命。 当一些设计模式最终更好的开发语汇所替换掉,模式背后的设计原则,将会永远存在下去。 这就是郑老师所讲的根基与枝叶的关系吧。

    作者回复: 你的理解很到位

    2021-06-03
    1
  • 佟宏元
    平时使用过单例,策略,观察者等模式,从一开始纠结于如何按照规定编写代码,到后面已经脱离了编码层面的使用,我总结出,学习设计模式,学习的不是如何编写代码,而是一种软件设计思想,比如什么场景使用策略模式,什么场景使用观察者模式,甚至是已经完全不体现在代码层面,而是对系统的功能的设计,对业务场景的梳理。所以我觉得设计模式最后的样子,是一种解决业务,设计软件的模型。

    作者回复: 于是,你就升华了。

    2020-11-21
    1
  • Janenesome
    Template Method 这个模式用得比较多,因为只需要将不同的部分封装到子类,场景比较清晰。其他的设计模式就用得比较少。 这个专栏给出的原则挺多,准备一个一个来践行,因为一下子体会到全部有点难,得一边写代码一边对照思考,慢慢改变自己的编程思想。

    作者回复: 可以用这些原则一个一个过一遍设计模式。

    2020-10-24
    1
  • 木头发芽
    跟独孤九剑一个道理,剑式就那么九个,怎么解决敌人就看具体是什么问题,在这九式的指导下见招拆招就可以

    作者回复: 是的,理解得越深入,运用得越纯熟。

    2020-10-10
    1
  • 设计模式反复看过很多次,可能和我做Bs架构的管理系统有关,只用过单例,消费者,生产者,然后是简单工厂。其他没用过

    作者回复: 还是有必要全面了解一下的。

    2020-07-24
    1
  • escray
    那个《面向模式的软件架构》实在是太狠了,居然有 5 卷,并且还得了 Jolt 大奖。 这篇专栏可以作为学习设计模式的一个开篇词。 之前也学习过 23 中设计模式,但是在写程序的时候其实用的并不多,时间长了,连 23 个模式的名字都记不全。 有时候按照 SOLID 原则去重构一些代码,总感觉好像是对应了某一个设计模式,但是又似是而非,需要到隔壁专栏复习一下设计模式。 “看眼看模式”部分,讲到程序设计语言的发展使得一些模式有了新的写法,我有点好奇,在业界究竟有多少公司能够跟进语言的演变。

    作者回复: 写代码很多时候,是一个人,或一个团队的事,整个行业的演变速度是非常慢的。

    2020-09-27
  • 感觉悟了;如果没有理解分离关注点和dip;很可能就在业务处理流程中直接调用 UserCollectorChannel的send方法了;都不会想到抽象出usersend接口。

    作者回复: 有收获就没白学

    2020-09-02
收起评论
显示
设置
留言
19
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部