项目的需求,要实现一个功能:更新表中若干行的部分列数据。Are you 明白大概要实现什么功能了吗?
嗯,我知道你明白了。那就接着往下看把。
遇到这样的问题,我相信很多人首先想到的方法是直接使用update语句,如下:

update tig_card_consume
SET giving_user_id='###' AND card_id='***'
WHERE user_id='+++' AND is_delete='0'
ORDER BY create_time
LIMIT 5

如果你想到的是这样的方法,恭喜你,这篇博客值得你一阅。
首先,咱们仔细体会下这段更新语句。。。如果表中满足WHERE 条件的数据不多,几十条,甚至几百条,可能都不会出现什么问题。但是,如果表数据非常多,几万条,几十万条,那么问题就来了,“锁表”将可能发生。
当我们执行这段更新语句时候,数据库自己先进行查询,然后执行更新。把满足条件的数据查询出来,这时候这些数据是被锁定的状态,别人不可以对其操作。

接下来,我们看看如何进行优化。不是优化这段代码,而是优化实现这个功能的思想,方法。
为了防止“锁表”的发生。我们必须手动把查询和更新两个过程拆开执行。即:先把满足条件的数据查出来,然后执行更新。如下是service层代码展示:

今天的主题是从面向过程到面向对象编程的思想转变!
仔细体会下,根据这个要实现的功能,分别用这两种方法去实现有什么不同,有没有点感觉?

第二种:整条记录就是一个对象,把该对象传过去
第一种:仅传一条记录中几个需要改变的值。抽象的对象,又给细化出来。

面向过程编程 VS 面向对象编程
面向过程编程是一种非常具体,要面面俱到的的编程方式。而面向对象是以对象为单位来进行编程,比较像正常人的思维。

下面我们举个例子,比如开车、加速、减速、刹车。

用面向过程来说就是你要先有一个车,然后这四个分别是4件事,也就是说你要写4个函数,分别是开车、加速、减速、刹车,这分别是四个事件,如果使用的话要调用4个函数。

但是对于面向对象的编程来说,我们关心的是车这个类,而不是开车、加速、减速和刹车这四个过程。这4个过程是车这个类的一部分,只是其中的一种行为,而且对于行为的顺序没有强制要求。

两种思想的对比:

面向过程是具体的东西,而且面向过程是面向对象的基础。面向对象可以说是面向过程的抽象,比如汽车有开车,加减速和刹车,关于汽车的操作有好多,每一个都需要一个具体的过程来实现,把这些过程抽象的总结起来就可以形成一个类,这个类包括的汽车所有的东西,所有的操作。

总结来说就是,面向过程是一种基础的方法,它考虑的是实际的实现,一般情况下,面向过程是自顶向下逐步求精,其最重要的是模块化的思想方法。因此在模块化编程的时候才会有“低耦合,高内聚”的思想来提高效率。面向对象的方法主要是把事物给对象化,包括其属性和行为。当程序较小的时候,面向过程就会体现出一种优势,其程序流程十分清楚。但是,面向对象编程更贴近实际生活的思想。

面向过程是具体化的,流程化的。解决一个问题,需要一步一步分析需要怎样,然后需要怎样,一步一步实现的。面向对象是模型化的,抽象出一个类,这是一个封闭的环境,在这个环境中有数据有解决问题的方法,你如果需要什么功能直接使用就可以了,至于是怎么实现的,你不用知道。

从代码层面来看,面向对象和面向过程的主要区别就是数据是单独存储还是与操作存储在一起。在类的里边,实现具体的功能还是需要流程化、具体化的代码去实现的,在类里还是需要具体的算法来实现的。总结来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象。

从面向过程到面向对象编程的思想转变相关推荐

  1. 面向过程与面向对象编程的区别和优缺点

    ■面向过程与面向对象编程的区别 转载至:https://www.cnblogs.com/strivers/p/6681876.html 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步 ...

  2. 面向过程和面向对象的设计思想、java类、Java类的定义、java对象、对象的创建和使用、类和对象、变量分类、方法分类、构造方法、方法的重载

    1.面向过程和面向对象的设计思想 面向过程:procedure oriented programming 缩写 POP. 分析出解决问题所需要的步骤,然后把步骤一步一步实现. 面向过程直接关注流程. ...

  3. 面向过程与面向对象——编程思想的演变

    编程语言从无到有,据维基百科统计,至今为止有600多种.如此众多语言,需要逐个学习吗?实际上编程语言都是相通的,编程语言只需要精通一门即可,其他都能融会贯通.比如Java与C++就差不多,Java和C ...

  4. 面向过程和面向对象编程的优缺点

    [1]面向过程和面向对象的比较 网上发现了一篇文章,说了一下OP与OO的不同,并且打了一个比喻,通俗易懂. 有人这么形容OP和OO的不同:用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的 ...

  5. Java 从面向过程走向面向对象的程序设计思想

    什么是面向过程?面向对象? 它们都是解决问题的思路 我用一个生活的例子来区别它们: 起床,洗漱,吃饭--等这些都是生活中的事 吃饭:我们想吃饭之前要做饭,饭菜可以是自己做,或者爸妈做,也可以下馆子 面 ...

  6. 面向过程与面向对象的程序设计思想

    面向过程:"面向过程"是一种以事件为中心的编程思想.分析出解决问题所需要的步骤,然后用函数把这些步骤一步步实现,使用的时候一个个一次调用就行了. 面向对象:"面向对象&q ...

  7. 面向过程与面向对象编程实例

    题目:要求输入两个数和运算符号,得到结果. 1. 面向过程编程 #include <iostream> using namespace std;float operationFun(flo ...

  8. 面向过程和面向对象的编程思想 复习原型 构造函数和实例对象和原型对象之间的关系

    体会面向过程和面向对象的编程思想 <!DOCTYPE html> <html lang="en"> <head><meta charset ...

  9. (转)函数作用域,匿名函数,函数式编程,面向过程,面向对象

    函数作用域 ? 1 2 3 4 5 6 7 8 9 10 def first():     name = 'Wangben'     def second():         name = 'Men ...

最新文章

  1. python编程问题--第四次
  2. 53个Python库,你必须要试试
  3. 简单探讨JavaScript 与 TypeScript之间的联系
  4. 解决ReSharper自动删除换行
  5. php pdo获取查询数据_php使用PDO获取结果集的方法
  6. MNE-Python从Raw对象中解析event
  7. Spring boot访问静态资源
  8. 北大教授最短毕业致辞。#人性的可爱 #饶毅#自我尊重
  9. future promise shared_future简单使用
  10. c语言程序设计实验周信东指针,C语言程序设计实验4 数组 周信东
  11. sqlserver php用户登陆页,SQLServer限制IP,限制用户,限制SSMS登录
  12. 惊呆了!这一操作将让NLP再次腾飞!
  13. Tensorflow基本语法和实现神经网络
  14. 图片涂改了怎么给复原_图片马赛克怎么去掉 怎么去除马赛克方法介绍
  15. Python cx_Oracle执行的sql字符串拼接含分号导致报“ORA-01756“引号内的字符串没有正确结束
  16. 综合微软、AMiner两大学术图谱,清华大学唐杰博士如何将Open Academic Graph亿级数据精准匹配
  17. jpress连接数据库mysql_win10+java+mysql+tomcat+jpress环境搭建与部署
  18. 为什么小样本不建议用深度学习?
  19. python打开图片的几种方法
  20. [整站源码]thinkphp美肤微形美容仪器网站模板+前后端源码

热门文章

  1. vscode常用看代码的功能
  2. 护眼灯色温多少对眼睛好?学生护眼灯推荐
  3. 做亚马逊为什么一定要注册品牌?原来有这么多好处!
  4. 中国医科大学2021年12月《医学科研方法》作业考核试题
  5. 编写一个SQL查询,获取Employee表中第二高的薪水(Salary)
  6. 如何制定项目里程碑 它的作用体现在哪
  7. 学无止境:了解主流的DBA认证考试
  8. 解决ERROR - unregister mbean error javax.management.InstanceNotFoundException: com.alibaba.druid:type=
  9. JupyterLab使用教程
  10. 模型压缩之量化入门笔记||量化基本公式的理解||量化过程可视化||LSQ公式理解