【设计模式】面向过程和面向对象

1、面向过程

假设从上帝视角,使用编程来描述我们的世界。如果使用面向过程的思想,就需要先找个开头,然后一步一步运行,最后结束。第一个问题来了:哪儿是开头?思考一下,似乎将宇宙大爆炸的起点作为开头最合适,然后宇宙开始膨胀,经过冷却形成现在的世界,最终宇宙坍塌、结束。把人的世界放到整个宇宙中是非常渺小的,只仅仅对人的世界做过程描述,也几乎不可能实现。这是极端的复杂情况,其实大部分复杂的情况,都很难用面向过程的方法实现。

2、面向对象

但是从面向对象的角度,再来描述人的世界,无非都是一个个人组成:

封装:人是封装好的,可以把内部复杂的生命机理看成黑盒;
继承:龙生龙凤生凤老鼠的儿子会打洞;孩子会继承父母的基因、财产;徒弟可以继承师傅的衣钵,并发扬光大;
抽象:每个人外形都差不多,找“差不多”的过程就是抽象;
多态:每个人都有四肢五官,但是具体到个人,就会表现出思想不同,做事的行为不同,这就是多态;
类:我们经常对人分类,比如黑人、白人,这都是类,不表示具体的某个人;
实例化:奥巴马就是对黑人这个类的一个实例化,代表具体的一个人;
聚合:一对男女组成情侣,把情侣看成新的“个体”,这个“个体”同时具有男女的属性,这就是聚合;
属性:人的基本属性有性别、年龄、姓名等等;
方法:通过“看”人的外形知道性别,“问”人才能知道的年龄、姓名等属性,“看”“问”等动作就是方法;
依赖:人活着需要空气、水、食物等,空气、水、食物就是人的依赖,没有依赖,对象不能运行

面向对象并没有找一个开始,比如人的起源、宇宙的起源,而是先抽象出简单的类,然后通过继承、聚合、组合等方法创造出繁华的人类世界。

3、胡思乱想

面向过程和面向对象到底有什么区别?个人认为,面向对象如果只保留方法,是不是就成了结构化编程,不就变成面向过程了吗。

面向过程中,一个函数调用另一个函数,前者就可以包含后者的功能,是不是也能看成是继承?
面向过程中,传入不同的参数,根据参数调用不同的分支函数,是不是就是多态?
面向过程中,调用第三方函数,也不需要知道函数的内部实现,是不是就是封装?

面向对象中,将对象设计出来,创建实例,并让它们运行起来。这个运行的过程是不是又成为面向过程了。

我是谁、我从哪儿里、我要到哪儿去?作为小白的我,好像要明白点什么时,又糊涂了!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭老二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值