封装,与协议的分层

2016/1/29 18:41 下午 posted in  TCP/IP

TODO: 为何要分层

要理解协议的分层,若是了解编程理念中的『封装』,可能更有助于理解分层的意义。

『封装』,狭义上指的是编写程序时,通过把一些重复操作的代码写成一个单独的函数,这就可以叫做一个简单的封装。

而我对于封装的理解,举个例子,当你忙了一天回到家,站在你的家门口,想要打开你家的房门时,你需要做以下事情:

st=>start: 站在家门口
op1=>operation: 拿出钥匙
op2=>operation: 找到对应的钥匙
op3=>operation: 把钥匙插到锁孔中
op4=>operation: 旋转钥匙
op5=>operation: 拉开门
op6=>operation: 拔出钥匙
end=>end: 开门结束

st->op1->op2->op3->op4->op5->op6->end

步骤很多,对不对。不过这个描述也没错,我们的确需要做出这些步骤才能开门。

但是,我们和别人聊天的时候,你想要告诉别人你昨天很累,回到家马上就睡觉了,你会说『昨天我回到家门口,掏出钥匙,找到对应的钥匙……』吗?

我想大部分人都不会的。

我会说『昨天我回到家门口,打开门,马上就进到卧室睡觉了』,这实际上就是一个封装,我们把这些步骤封装成了一个『开门』的步骤。

看到这里你可能已经大概感觉到了,封装,实际上是把一些步骤,打包整合,使它变成了更高层次的行为。看到这里,我觉得我们应该停下来,多思考一会儿关于封装的概念,毕竟这个概念对于理解后面的协议分层非常关键,所以,让我们暂时停一下脚步,来观察并思考一下,我们日常生活中,还有哪些东西实际上也是一种封装吧。