-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(tadp): add talk about design paradigm.
- Loading branch information
Showing
5 changed files
with
23 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> | ||
|
||
如上图所示,可以更加体会到设计范式的重要性。任何重要的产品都离不开技术的革命,而它们交付给大众的形式都是产品,就像iPhone一样,其革命性来自于AppStore,在AppStore后面,是数以百万计的开发者。可以看到革命性的产品在通过向用户提供价值的同时,也需要构建一个吸引开发者的生态环境。 | ||
|
||
在这个生态环境中,有面向编程模型的SDK,也有如何高效使用编程模型的设计范式。在任何技术生态中,设计范式都是至关重要的,它需要足够的简单明了,使得开发者能够实现迁移。当开发者进入这个领域,一些他们所熟悉的设计范式能够与新环境中的范式所兼容,他们就会喜欢这里,从而诞生伟大的作品,同样,掌握更多的设计范式会让你在面对任何工作时都会显得游刃有余。 | ||
|
||
注重积累设计范式,做好分类整理,时常做好复习。 |
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.