拌饺子馅儿的时候跟猫猫聊编程
最近一次手术以后,在家里休息,猫猫从北京飞过来照顾我,有天一起看完了一部好看的电影之后,开始准备晚餐:韭菜肉馅儿 + 香菇肉馅儿 + 芹菜肉馅儿的饺子。一次包两顿的,馅儿也比较多,我被分配的工作是绞肉馅。
猪肉是超市买好的肉泥,兑上材料,加上鸡蛋,放在一个小盆里用筷子沿着顺时针方向不停的搅拌直到搅匀。可能是手术以后还没有恢复,也可能是我体力活干得太少,一会儿我就觉得有点儿累了。
然后我就说,要有个绞肉馅的机器就好了。
不,要有个搅馅儿的机器就好了,不光能绞肉馅,还能搅韭菜馅儿,白菜馅儿,包子馅儿。。。
老婆说,这每个力度和速度都不一样。
这个好办,加点儿设置就行。我这样说到。然后我就自顾自的说了下去。
太多的设置也麻烦,最好能有个配置绞肉馅机器的工具箱,搅馅儿之前先根据需求组装一个,然后就可以拿来用了。
然后就会发现,干嘛不做得更加通用呢?如果我需要打蛋器怎么办?最好能有个叫做厨房搅拌工厂的东西,用来生产各种搅拌类用品,你需要一个打蛋器?OK,我给你生产一个,你需要一个绞肉机,喏,给!
然后呢?既然有了工厂,为什么还需要这么多刀具勺子放在那里?为什么不生产一个厨房金属用品工厂?需要刀具就生产刀具,需要勺子就生产勺子。。。
老婆打断说,这也忒夸张忒不方便了。
是啊,我说,我现在用的Java到处都是这样的代码,这叫做工厂模式。
说到这里,我问老婆说你上学的时候考计算机二级学过面向对象以及函数形式的编程吧,老婆说学过,但是从来没弄懂。
然后我就兴致勃勃的继续说下去了。
以前的时候,厨房里干活就是:洗菜,切菜,起火,翻炒,出锅。
后来变成了,用刀切菜,煤气灶点火,在锅里翻炒,用盘子盛菜。
你看,现在每个动作都有个主体,这就是面向对象,你在想着厨房的事情的时候,想到的是刀/煤气灶/锅/盘子,然后把他们的功能组合组合,就把菜给炒了,你还可以用它们来煮汤或者油炸食品。
当你把厨房事务分解成物品和功用的时候,这就是面向对象的思维方式了。
看到老婆有些恍然的样子,我又再引申了一层。
你看,这是高压锅的锅盖,它有各种属性,比如你可以说它是金属,是锅盖,是个比较结实的有柄的东西,是个圆形的东西,固体的东西,有垫圈的东西等等等等,这些,都是通过不同的方式去看待高压锅的锅盖。这些,就是编程里面的接口,你看到一个接口,不需要知道它背后是什么,只需要知道可以用它来做什么。比如这个锅盖是个结实的有柄的东西,我当初才搬来的时候就用它来当锤子钉过书架。
我还想继续说下去,但是猫猫已经对着话题失去了兴趣,还是准备吃饺子好了
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。