程序员进阶攻略
胡峰
京东成都研究院技术专家
33679 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 65 讲
蜕变:破茧成蝶 (3讲)
结束语 (1讲)
程序员进阶攻略
15
15
1.0x
00:00/00:00
登录|注册

06 | 模式与框架:它们的关系与误区?

程序员是圣斗士,框架是“圣衣”,模式是“流星拳“,但最重要的还是自身的“小宇宙”
框架中包含了很多模式的应用、设计概念、优化实践
框架是代码复用,模式是设计复用
提供了一种问题的重用解决方案
可能被过度利用,导致过度依赖症
打开“快速开发”与“代码复用”之门
给程序员定制的开发脚手架
代码复用
提供了一种问题的重用解决方案
内功和招数并重、相辅相成的 “武功”
优化问题域的解决路径
抽象的概念,需要大量编程设计实践
描述解决问题的核心解决方案
源自 GoF 的《设计模式:可复用面向对象软件的基础》
两者关系
开发框架
设计模式
模式与框架:关系与误区

该思维导图由 AI 生成,仅供参考

在学习程序设计的路上,你一定会碰到“设计模式”,它或者给你启发,或者让你疑惑,并且你还会发现在不同的阶段遇到它,感受是不同的。而“开发框架”呢?似乎已是现在写程序的必备品。那么框架和模式又有何不同?它们有什么关系?在程序设计中又各自扮演什么角色呢?

设计模式

设计模式,最早源自 GoF 那本已成经典的《设计模式:可复用面向对象软件的基础》一书。该书自诞生以来,在程序设计领域已被捧为“圣经”。
软件设计模式也是参考了建筑学领域的经验,早在建筑大师克里斯托弗·亚历山大(Christopher Alexander)的著作《建筑的永恒之道》中,已给出了关于“模式”的定义:
每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次地重用那些已有的成功的解决方案,无须再重复相同的工作。
而《设计模式》一书借鉴了建筑领域的定义和形式,原书中是这么说的:
本书中涉及的设计模式并不描述新的或未经证实的设计,我们只收录那些在不同系统中多次使用过的成功设计;尽管这些设计不包括新的思路,但我们用一种新的、便于理解的方式将其展现给读者。
虽然该书采用了清晰且分门别类的方式讲述各种设计模式,但我相信很多新入门的程序员在看完该书后还是会像我当年一样有困扰,无法真正理解也不知道这东西到底有啥用。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

程序设计中的设计模式和开发框架扮演着重要角色。设计模式源自前人解决问题方式的总结,是解决问题域的优化路径,但引入模式也会增加代码量和复杂度。程序员需要具备“火候”能力来衡量其代价和益处。设计模式既是内功又是招数,初学者可能会感到困惑,但随着经验积累,程序员能够熟练掌握从具体到抽象的思维模式,使设计模式的应用更加亲切。开发框架已成为程序开发的重要组成部分,提供了快速开发和代码复用的便利。然而,框架的过度依赖可能带来束缚,程序员需要了解、评估、选择与取舍框架,成为新的挑战。框架和模式都提供了一种问题的重用解决方案,框架是代码复用,模式是设计复用。框架中包含了很多模式的应用、设计概念和领域的优化实践,是关于程序代码的知识。总体而言,设计模式和开发框架在程序设计中不可或缺,但程序员需要在使用中保持警惕,以充分发挥其优势。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《程序员进阶攻略》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(28)

  • 最新
  • 精选
  • third
    心得如下: 1.模式和框架都是前人总结之下的经验 模式是代码层面,解决单个问题的成功方法 框架是设计层面,解决一系列问题的成功方法 挺感谢前人的奋进的 2.我们一边在使用工具,获得便捷,一边在被工具所驯化,讨厌麻烦,变得简单。比如重新理解框架原理。

    作者回复: 总结的好棒👍😄

    2018-08-15
    2
    23
  • 我的理解: 框架-是非业务代码功能的复用 模式-是经验优秀开发方式的复用 一个牛逼的框架,一定会使用一些牛逼的设计模式。框架,是牛人编写出来具体解决一类问题的半成品(相对于使用者),使用者主要的工作是按照框架的结构,填充自己业务代码。 设计模式是解决一类特定问题的最佳实践经验,类似内功,怎么用什么时候什么地方用用什么是使用者根据需要和积累选择的。 比喻一下: 框架有点类似游泳圈 模式有点类似潜水时该怎么办或仰泳时候该怎么办的最佳经验。

    作者回复: 感觉还是我最后的比喻更贴切些,哈哈😄

    2018-08-16
    4
  • Franklin.du
    看过好几遍设计模式的书,开发中能想到一些相关的设计模式,用起来就是“菜谱”的感觉。编程实践还是不够多,达不到融会贯通的地步。看来有了秘笈“降龙十八掌”也不是那么容易练成的。

    作者回复: 编程,是实践的艺术啊

    2018-08-15
    4
  • HellloWorld
    胡峰老师您好!1.我之前看过《大话设计模式》等设计模式的书籍,上面的demo也实践了,但是在实践中似乎从来没应用过,请问具体实践中应该应用什么方法去学习设计模式?如何才能真正做到掌握并且应用设计模式?2.Java相关的框架实在太多,自己在项目开发中用了很多框架,很多问题基本百度能解决,但是自己还是停留在会用的阶段,具体原理还是不懂,请问有必要去研究框架原理吗?学习框架达到什么样的水准才算可以呢?

    作者回复: 框架会用只是第一步,原理一定要明白,不懂就要去看文档和代码,框架搞透了,设计模式的应用自然就明了了。框架的实现中大量应用了设计模式

    2018-10-09
    3
  • who am i
    作者使用类比和排比的手法,让我们更清楚框架,模式的联系和区别。希望后面的文章也能这样,会让我们更能理解明白。

    作者回复: 恩,会的😊

    2018-08-19
    3
  • 陈越
    老师,谁是我们的雅典娜啊?😄

    作者回复: 😄,在你心里,你为此而努力战斗

    2019-07-10
    2
  • 无怨无悔
    在看设计模式那块的时候,也是似懂半懂的。实战中运用了,才明白设计模式的意义存在。我想问胡老师下有什么更好的方式去更深层次的理解它吗?有时候觉得,可能还是没有达到那个境界。希望能指导点拨下……

    作者回复: 有时就是代码量和时间经验够了,突然就明白,抽象的东西总是突然就顿悟了

    2018-10-23
    2
  • L.
    小公司还没有属于自己的开放框架,怎么能搭建一个开发框架呢

    作者回复: 开源的吧,基本能满足,遇到不满足的情况再扩展

    2018-08-15
    2
  • June Yuan
    相比编程而言,感觉设计模式和框架的学习是比较有门槛的,理解它们的前提,是要理解它们所解决的问题。曾经学习设计模式,看看书还能一知半解,但是像 IoC、AOP, 当时在没有任何 WEB 项目经验的情况下,看了一些博客文章试图简单了解,结果依然一头雾水。实际工作以后,在真实的项目和业务需求里泡得多了,有的原先云里雾里的东西才逐渐变得自然。

    作者回复: 是这样的,实践和理论要交叉进行,反复几次可能就豁然开朗了

    2018-08-15
    2
  • 疯狂土豆
    感觉除了一些公共的模块可以抽象,和模式华。像框架都是针对一个大面积的需求去使用各种模式开发一套灵活的框架,但是在业务代码中将代码模式话可行性高吗?因为他们的共性太少了,不同的甲方不同的应用场景,都会导致共性降低,抽象相对比较困难。但是从另一方面而言一个行业下的规则和流程基本是统一的,所以我感觉针对各个行业都有自己可以抽象和模式华的空间。然而在实际开发和设计的时候,觉得抽象华和模式华完全无从下手?还望老师给点建议。

    作者回复: 现在火的中台概念,就是行业业务规则的抽象和平台化

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