第696章 分工与封装的启示!
作品:《四合院开局四八,八岁带妹逃荒》 李兴华的大脑,在以一种前所未有的,疯狂的速度,运转着。
眼前那幅温馨而日常的画面,在他的眼中,被迅速地,分解,重构,变成了一张,闪烁着智慧光芒的,系统架构图!
那个“拆骨匠”王小牛!
他不是一个孩子!
他是一个“模块”!一个独立的,功能性的,代码模块!
这个模块,拥有一个,唯一的名字——“拆骨匠”。
它拥有一个,唯一的功能,一个“方法”(Method)——`separate_bone_from_meat()`(从肉中分离骨头)。
它拥有一个,私有的,“不对外开放”的工具,它的“属性”(Attribute)——那把厚重的砍骨刀。
它接收一个“输入”(Input)——一只完整的兔子。
它产生两个“输出”(Output)——“兔肉”和“兔骨”。
而那个“切肉丁”王小花!
她,是另一个,独立的模块!
她的名字,叫“切肉丁”。
她的功能(方法),是`cut_meat_into_cubes()`(将肉切成方块)。
她的私有工具(属性),是那把小巧的厨刀。
她接收的“输入”,是来自“拆骨匠”模块的输出——“兔肉”。
她产生的“输出”,是“肉丁”。
而老师!
那个自称为“总厨”的,王小虎!
他,就是整个系统的,主程序!是`main()`函数!
他,作为“总厨”,他需要知道,如何去拆骨,如何去切肉吗?
不需要!
他完全不需要!
他甚至,不需要知道,“拆骨匠”用的是什么刀,“切肉丁”的刀法,有多快!
那些,都是属于“拆骨匠”和“切肉丁”这两个模块,内部的,私有的,秘密!
“总厨”唯一需要做的,就是,在需要骨头的时候,向“拆骨匠”发出一个“请求”(Request)——“把骨头给我”。
在需要肉丁的时候,向“切肉丁”发出一个“请求”——“把肉丁给我”。
然后,他就可以,拿着这些,由其他模块处理好的,“半成品”,去完成他自己的,更高级的,烹饪任务!
这就是……
这就是……
一个词,如同开天辟地的惊雷,狠狠地,劈在了李兴华的脑海里!
“封装(Encapsution)!”
对!就是封装!
将模块内部的复杂实现(如何拆骨,如何切肉),和它的私有数据(那两把不同的刀),都“封装”起来,隐藏起来!
只对外,提供一个,清晰的,简单的,“接口”(Interface)!
(给我骨头/给我肉丁)。
这样一来,“总厨”这个主程序,就变得,无比的,简洁!清晰!
他不需要去关心那些,繁琐的,底层的细节!
他只需要,去组织,去调用,这些功能独立的模块,来完成一个,更宏大的目标!
李兴华的身体,因为极致的兴奋,而开始,微微地,颤抖起来。
他终于明白了!
他终于明白,钱学敏教授口中的,那个“全新的建筑学”,到底是什么了!
他们之前的做法,是什么样的?
是没有分工!
是黄建功总工程师,一个人,既要负责拆骨,又要负责切肉,还要负责掌勺!
当工程变得无比庞大时,他一个人,就算有三头六臂,也必然会,被这些无穷无尽的细节,活活累死!
而老师,现在,给出的这条路,是多么的,优雅!
多么的,高明!
分工!
解耦!
封装!
将那座,像紫禁城一样复杂的“昆仑”系统,拆解成,成百上千个,像“拆骨匠”、“切肉丁”一样,功能单一,职责明确的,独立的,“模块”!
让不同的团队,去负责,不同的模块!
而黄建功总工程师,他要做的,不再是去当那个,所有细节一肩挑的,苦力。
他要做的,是像老师一样,去当那个,运筹帷幄的,“总厨”!
去设计,整个系统的顶层架构!
去定义,这些模块之间,该如何,相互调用,相互“请求”!
这……
这才是真正的,“工业化”的,生产方式!
这,才是那座,需要二十年才能建成的,宏伟巨城,唯一的,希望!
李兴华的眼睛,湿润了。
他看着那个,正在有条不紊地,指挥着弟弟妹妹,处理着食材的,小小的身影。
心中,涌起了,无尽的,狂热的,崇拜。
他以为,自己那个关于“模具的模具”的问题,已经,触及到了思想的极限。
此刻他才发现,自己的那点想法,在老师这真正的,大道至简的“创世法则”面前,是多么的,幼稚,可笑。
他甚至,还没有开口。
老师,就已经,将答案,活生生地,展现在了他的面前。

