Skip to content

Commit

Permalink
feat(tadp): add talk about design paradigm.
Browse files Browse the repository at this point in the history
  • Loading branch information
weipeng2k committed Aug 27, 2024
1 parent e216eb1 commit 3c433ae
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,3 +95,4 @@
* [热风-《计算机网络》第6章-物理层(a.基本概念)](book/computer-network-06a.md)
* [热风-聊一聊架构](book/talk-about-architecture.md)
* [热风-使用Javac's Release选项](book/javac-release-option.md)
* [热风-谈一谈设计范式](book/talk-about-design-paradigm.md)
1 change: 1 addition & 0 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,4 @@
* [热风-《计算机网络》第6章-物理层(a.基本概念)](book/computer-network-06a.md)
* [热风-聊一聊架构](book/talk-about-architecture.md)
* [热风-使用Javac's Release选项](book/javac-release-option.md)
* [热风-谈一谈设计范式](book/talk-about-design-paradigm.md)
21 changes: 21 additions & 0 deletions book/talk-about-design-paradigm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# 谈一谈设计范式

       “四人组”(Gang of Four,GoF)在1995年出版了《设计模式:可复用面向对象软件的基础》一书,该书首次系统的介绍了23种设计模式,这些模式被认为是面向对象设计的经典,它与罗伯特·马丁的《敏捷软件开发──原则、模式与实践》一起被称为“软工双雄”。设计模式对软件开发的影响是极为重大的,现如今优秀的软件中都可以找到它们的影子,比如:Java开发者常用的Spring框架中,就使用了多种设计模式,使用这些模式的目的是为了框架获得优秀的扩展能力,Spring使用了大量的设计模式,而它也以优秀的扩展性而闻名。

       对于Spring框架的开发者而言,Java语言是一种编程模型,而如何使用Java去构建Spring框架就是一种设计范式。回过头来,想一下自己平日所做的工作,以及花费精力所取得的成果,其中有哪些是依赖技术特性的?又有哪些是(有创新性的)使用这些技术的策略和方法?答案应该是后者,这是一种软实力,也就是你在这个领域积累的设计范式。再举个例子,比如Java的模块化技术JPMS,如何通过关键字定义模块是一种编程模型,而如何更好的使用模块去构建系统,以及面对问题该拆分出哪些模块,使得系统获得非模块化系统所不具备的优势,这些就是设计范式。市面上关于编程模型这些形而上的东西很多,而只可意会不可言传的设计范式却很少讨论。

       OSGi不是不好,搞不下去的原因就在于其设计范式没有深入人心。EJB不是没有价值,很多开发人员缺少有效使用这项技术的设计能力,没有设计范式支撑的它也注定被丢弃。我们可以通过技术文档和书籍来学习技术,但是该怎么提升技术范式呢?答案是没有现成的知识让你直接掌握技术范式,这个活儿需要你自己来。

       在工作和学习中,对于技术的使用过程中,除了使用它解决问题,还要刻意的思考:这么用对吗?有没有更好的使用方式?它还能解决了哪些问题?在构建解决方案的同时,也就是在完善自己的技术范式。

       任何技术产品都是以产品(或者运行时)形态来展示其强大的特性,比如:WebLogic Server应用服务器,就算是OpenAI的chatGPT也是一样,这些产品能够带来革命性的价值,而要获得这价值,就需要依赖技术以及掌握这些技术的人,如下图所示:

<center>
<img src="https://weipeng2k.github.io/hot-wind/resources/talk-about-design-paradigm/design-paradigm.png" width="60%" />
</center>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如上图所示,可以更加体会到设计范式的重要性。任何重要的产品都离不开技术的革命,而它们交付给大众的形式都是产品,就像iPhone一样,其革命性来自于AppStore,在AppStore后面,是数以百万计的开发者。可以看到革命性的产品在通过向用户提供价值的同时,也需要构建一个吸引开发者的生态环境。

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在这个生态环境中,有面向编程模型的SDK,也有如何高效使用编程模型的设计范式。在任何技术生态中,设计范式都是至关重要的,它需要足够的简单明了,使得开发者能够实现迁移。当开发者进入这个领域,一些他们所熟悉的设计范式能够与新环境中的范式所兼容,他们就会喜欢这里,从而诞生伟大的作品,同样,掌握更多的设计范式会让你在面对任何工作时都会显得游刃有余。

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注重积累设计范式,做好分类整理,时常做好复习。
Binary file modified resources/hot-wind.graffle
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 3c433ae

Please sign in to comment.