最近在学习JAVA编程,基础课程还算简单,一点一点地学完了。这里面有一些很重要的概念,比如“封装”这个概念。
这个概念在JAVA里面表示“把数据和数据的操作放在一起就叫做封装”。换个说法讲,我们说“一个鸡蛋”,就是说鸡蛋这个整体。我们不用管鸡蛋内部是如何的,但是我们知道鸡蛋可以孵小鸡、可以煎、可以炒、可以煮、甚至可以按摩。
这个概念的原理是什么?
封装这个概念我们是经常用而不自知,比如你会开车。对于车这个工具是把车的种种零件封装在一起就成了车,你不用管这个车是通过什么驱动的,是如何产生动力的,是如何有如此大的马力的,你也不用管这个车是如何通过方向盘实现转弯的,等等这些细节。你只需要知道怎么开这个车就可以了。
你不用管电脑内部是如何运行的,你只需要知道如何用电脑就可以了。
总结封装原理:你只需要知道这个被封装的东西是如何用的就好,不需要管内部是如何构造、运行的。
这个概念为什么重要?
这个概念有助于我们理解这个复杂的世界。你可以想象一下,每个人都是一个独立的系统。每个独立系统内部如何工作我们不用管,我们只需要知道这个系统的属性和这个系统能做些什么。
如果你想开一个公司,你只需要找到你所需要的那些人(系统),然后“封装”起来成为一个公司。每个公司也是一个独立的系统,公司与公司封装起来成为集团。
个人,家庭,社会,国家,都是不同程度的封装。
原子,分子,细胞,器官,身体也是不同程度的封装。
世界就是这样由简单逐渐构造成复杂的,还是古人说的那句话深刻:道生一,一生二,二生三,三生万物。
复杂的程序都是由简单的程序封装而来,所以封装这个概念就显得如此重要,因为我们无时无刻都在用这个概念,甚至我们说的话就是这样封装的:字、词、句、段、篇。
这个概念普遍被如何误解?
你现在很口渴,你只需要告诉大脑,你口渴了,然后你就去喝水了。你并不需要告诉大脑具体的步骤:向前迈5步,用手拿起那个水杯,将手移到饮水机处接水,然后将水杯移动到嘴唇边上,倾斜45度角,张开嘴喝水。
上面这个例子,你肯定不会选择第二种方式下达命令。但是,生活就是如此有意思。很多看起来简单的概念往往就是容易弄错。
两个例子
小王叫小明去买包子,小明买回来包子后,小王抱怨说:这包子这么烫,怎么吃呀,我还要赶着去总部参加会议呢。小明十分懊恼:不是你叫我买的包子吗?你又没有告诉我要买不烫的包子。再说了,你要去赶着参加会议,你应该告诉我:给我买方便在路上吃东西啊。
这个例子,你发现问题了吗?小王没有说自己的目的(方便在路上吃的东西),而是下达的是具体指令(买包子),导致小明买回来后并不符合小王的需求。
小王如果明确说出了自己的目的后,小明会根据小王的目的来做出具体的行动。小王如果把小明当成和自己一样的被封装起来的独立的系统。然后就知道要传递的信息并不是具体如何做,而是传递目的。
我妈经常下达具体的指令:给我把厨房抹干净。然后我去把厨房抹干净了。我妈看到后非常不满意,厨房里面的东西怎么还是这么乱?我回答说:不是你叫我抹干净厨房吗?没叫我整理东西呀!
我妈应该告诉我的是:我想让厨房变得更整洁。这才是她的真正目的。而我就会根据我的系统进行思考具体步骤。
一个团队中,队长与队员之间最容易出现误用这个概念。队长如果每件事都想得事无巨细,那么队员的大脑就没用了,队员只能执行简单的命令,无需任何思考。可事实上队长永远无法想完整一件事,只需要告知队员需要实现什么目的就可以了。
如何正确使用这个概念?
把别人当作你的另一半大脑,而不是让别人成为你的另一半手脚。你只需要想清楚自己需要别人做什么,然后清楚地表达给正确的对象,而不是告诉别人具体如何做。
错误使用这个概念有什么可怕之处?
弄错了对象,就是让马去犁田,让车去渡河。发送错误的信息就会导致马也忘记了如何走路。
拿上面团队的例子说,如果队长不去想要告知的目的是什么,而是告诉别人如何做,那么队长只能永远手忙脚乱,队员永远都在请示下一步动作。