从卖煎饼果子看软件设计

今天早上,公司搞了个培训,主要是讲面向接口编程,也就是定义接口api,提高规范性和标准性,让各个系统间的协作更加清晰。面向接口编程固然是现在软件开发中比较提倡的一种手段,不禁让我想起了早上一个卖煎饼果子的摊位。
一般的卖煎饼果子是一个人,先打鸡蛋,摊饼,最后放果子。但我见的这个是夫妻档,丈夫负责打鸡蛋、摊饼,妻子负责放果子。收钱的话,就自己放到钱箱里就可以了。这样一来,卖煎饼果子的效率就提高了很多。
让我们用软件的角度分析分析。这里的实体对象有丈夫、妻子、煎饼果子、钱箱和买早餐的人。丈夫要打鸡蛋、摊饼,那末就是I打鸡蛋和I摊饼两个接口,这两个接口也有角色的意思。
丈夫就实现了这两个接口。妻子负责放果子,那么一样的,有I放果子这个结构,由妻子来实现,然后继续,钱箱实现了I收钱的接口。买早餐的实现I找钱和I吃果子的接口。现在看来这一套东西在正常运行着。
有一天,为了让煎饼果子卖的更好。夫妻的儿子来帮忙收钱了。这个时候,我们就让儿子实现I收钱和I找钱的接口,取消钱箱的接口,取消买早餐的人的I找钱接口。这样,从外层看,所有的角色都没有变,都存在,依然正常运行,只是效率提高了。
综上看来,就像业务层没有改变,只是实现层做了调整,提高了系统的运行效率。如果像是以前一个人卖煎饼果子,那末这个人就把多个接口都实现了就OK了。
看来软件设计思想,面向对象设计,用在卖煎饼果子上也可以啊。
其实整个事情是反过来的,只有在现实中可以被接受的有效系统才是我们设计中应该遵循的标准。

所以:看来软件设计思想,面向对象设计,是从卖煎饼果子上得来的啊。哈哈