面向对象编程最恰当的比喻是什么?
面向过程方法写的程序是蛋炒饭,面向对象方法写的程序是拌饭。所谓盖浇饭,北京叫盖浇饭,东北叫烩饭,广东叫菜头饭,就是一碗白米饭上面放一个盖浇菜,喜欢什么就浇什么。我觉得这个比喻比较贴切。
蛋炒饭的细节我不清楚,因为我没当过厨师,也不会做饭,但最后的工序肯定是把米饭和鸡蛋混合搅拌均匀。1.1.1.1.1.1.1.1.1.1.1.1.2.1.2.1.2.2.1.2.1.2.1.2.2.2.2.如果你想要一份青椒土豆拌饭,用切碎的青椒土豆浇水。
蛋炒饭的好处是吃起来均匀,吃起来香。如果恰好你不爱吃鸡蛋,只爱吃蔬菜,那么唯一的办法就是全部扔掉,做一份新鲜的蔬菜炒饭。盖饭就没那么麻烦了。你只需要取下盖子,换上一个盖子就可以了。盖浇饭的缺点是口感不均,可能没有蛋炒饭香。
蛋炒饭和盖浇饭哪个好?其实这样的问题很难回答。如果非要比较的话,一定要设一个场景,不然只能说各有所长。如果大家都不是美食家,不太关注,那么从餐厅的角度来说,做盖浇饭显然比蛋炒饭更有优势。他想怎么组合就怎么组合,不浪费。
盖浇饭的好处是“菜”和“饭”的分离,提高了制作盖浇饭的灵活性。如果你对这顿饭不满意,就换一顿饭,如果你对这菜不满意,就换一道菜。软件工程的专业术语是“可维护性”,但是“饭”和“菜”的耦合度比较低。蛋炒饭是把“鸡蛋”和“米饭”混在一起。改变其中任何一个都非常困难,耦合度高,以至于可维护性差。软件工程追求的目标之一是可维护性,主要表现在三个方面:可理解性、可测试性和可修改性。面向对象的好处之一是显著提高软件系统的可维护性。