对面向对象的一些思考

到底什么是面向对象,再讨论这个问题之前我们先来假设一下如果不用面向对象用过程试编程来想象一下是什么样子的。

过程试的编程很好理解,我们再一个main方法中从头到尾一行一行的写代码,同时定义多个变量来完成我们的逻辑。后来高级一点的程序员会抽取一些共有功能,定义一个函数。再代码任何地方,我们都可以使用这个函数。

一个函数其实单纯的就是一个代码片段,它没有状态,只管你输入一个数据然后经过一系列的计算后给你返回一个处理结果,或者void不返回任何数据。

好了这时候我们程序变复杂了,我们需要买肉,这时候需要向肉联厂发起一个购买请求,传入我们需要的公斤数,然后程序内部通过malloc分配内存给我们创建了指定公斤数的meet,似乎是解决了我们的需求。但是问题来了,这个肉联厂只是单纯的为我们当前调用者来服务的,每次调用都会给我们返回指定公斤数的肉,但是实际情况是肉联厂处理猪肉的能力是有限的,猪肉并不会无中生有,有时候他的存货并没有那么多。函数只是一个静态的代码片段,它的内部并没有维护一个剩余猪肉公斤数的状态。我们要如何解决的,除非是定义一个全局变量的capacity,每次获取猪肉的时候对判断容量如果不够就返回没有足够的猪肉,如果可以购买就正常返回然后capacity进行减少。

好了暂时解决了猪肉供应问题,现在又有新的问题诞生了,随着我们购买量的增大我们肯定需要找运输公司帮我们运货。那么运输公司的车辆有没有空闲,汽车车况是不是正常,汽车有没有足够的汽油。我滴天,代码没法写了,我就想买一斤猪肉,为什么我还要操心这么多的东西。能不能就给我一个方法,然后我传入需要购买的公斤数,然后这里面的所有事情我都不用操心了,猪肉就经历九九八十一难到了我们手上。

要想完成这些需要需要怎么办,就需要肉联厂他自己维护他们的capacity。然后肉联厂需要和物流公司进行交互,那怎么办,要么我肉联厂内部维护一个物流公司的对象,我需要车辆的时候就调用一下,或者物流公司暴露一个接口供我调用,至于有没有车辆空闲,车辆的车况是不是正常,有没有足够的司机,我都不管这是你的事情。

这样每个对象各司其职,构成美好的世界,这就是面向对象的好处。

猜你喜欢

转载自blog.csdn.net/qq_25448409/article/details/95192261