5.2 应用范式
a. 表模式
表模式关注的数据库的表,它先考虑数据库表需要管理,然后添加对数据增删改查的操作 。封装是面向对象的关键特征之一,把数据和操作数据的行为绑定在一起,拥有一个标识符(类)来表示它两的集合,而表模式允许你把数据和行为放在一起,但是它没有一个标识符来标出它所代表的主体 。
这种模式在PC时代很盛行,例如VB和.net等桌面应用开发框架上,但是在JAVA服务应用中也被我发现了,如下:
b. 事务脚本模式
脚本,是指表演戏剧、拍摄电影等所依据的底本又或者书稿的底本 。脚本可以说是故事的发展大纲,用以确定故事的发展方向 。
事务脚本模式,关注点是事务的流程和步骤,是对事务流程和步骤的编排,是一种面向过程的组织和表达形式 。
按照事务脚本模式编程,可以不需要任何面向对象的设计,其中任何逻辑都可以通过if/else/while等流程控制元素来表达 。
事务脚本模式的优点是,门槛低容易上手,也符合人的直线直觉思维;它的缺点是,当业务逻辑复杂是,事务方法会快速膨胀,因为业务属性不明确和缺乏抽象,不好复用和扩展 。该模式在服务端应用中很常见,从MVC时代开始,一般通过controller组织事务流程,常见的分层结构如下:
c. 领域设计模式
领域设计模式,是通过分析和发掘业务领域的概念,从中提炼和设计出具有数据和行为的对象模型(类),并建立模型之间的关系 。
领域设计模式,需要建立一个完整的由对象模型组成的层,来对目标业务领域建模 。业务是经常变化的,通常有会通过分层的模式,让领域模型和系统其他部分保持最小的依赖 。
至此,你会发现领域设计是DDD的底层思想,是面向对象的实践,更多请查阅“对象建模”和“领域驱动设计(DDD)”相关的材料和数据,这里不做展开 。
d. 应用范式总结
不同的应用范式,是随着软件复杂度逐步提升演进出来的,不同模式面对和解决不同复杂度的问题,相互之间没有好坏之分 。当问题比较简单时,使用事务脚本模式足够应付,反倒使用领域设计就过度设计,增加了不必要的复杂度,适得其反 。
六、代码的道与术
任何一个学科的学习,都要从基本概念、基本原理、基本方法入手,才能把握住问题的实质 。
所谓,招式套路可以千变万化,扎实深厚的内功却始终如一 。内功是基础和本源的东西,例如耦合和内聚,我们都知道低耦合高内聚好,但如何衡量代码的耦合和内聚?再如编程范式,我们都在使用面向对象语言,为什么看到的大多数是面向过程的代码?究其根本,是我们容易忽视基础和本源的东西,比如更关注设计模式,更关注架构设计,但上层的设计理念大多数是来自基础和本源的思想指引 。
套用道家的一句话:道以明向,法以立本,术以立策,器以成事 。
从代码的角度来看:
- 道:是好代码,无以名状,无以表述,只能假想形式表达,仁者见仁智者见智 。
- 法:是编程范式,是规章制度,是规范约束,使其在道的合理范围之内,保住基线 。
- 术:是设计原则,执行层面的方法论 。
- 器:是spring/mos-boot,有形的工具,保障的是执行和效率 。
推荐阅读
- 车辆识别代码是什么意思
- 音序怎么写在四线格里 音序怎么写
- 2022年各高校专业代码四位数 2022年各高校专业代码
- 诗歌的特征包括 诗歌的特征包括哪四个
- 新课程教学反思中的问题有哪些
- 幼儿园教学经验总结 教师个人教学经验总结
- 罗牛山学校教学质量怎么样
- 月份天数口诀手指视频 月份天数口诀歌
- python编程入门自学 游戏代码大全可复制免费
- 教学过程的本质表现在哪些方面 教学过程的本质属性是