怎么把大象放进冰箱里:打开冰箱门,大象进去,关上冰箱门。

就从软件设计上讲,我觉得绝对不是笑话,而是很经典的一个成功的范例。

首先,我们需要明确的一个问题是在设计阶段,我们需要的不是具体的实现方法的考虑,不需要太过于细节,特别是一些大型的项目,不然你会陷在某个技术要点里不能自拔,而拖延了整个项目的设计工作。在OOD中,我们需要抽象,在UML我们称之为建模。我们将需要的步骤进行抽象,于是得到这样的三步。

如果我们仔细想来,这样的设计是很有道理的。比如打开冰箱门,为什么呢?我们在这里提供了一个很大的接口在这里,因为,我们不知道我们将要处理的冰箱是多大的冰箱,可能只是家用的超小冰箱,也可能是刚好大象大小的,更有可能能装下整个非洲平原的。我们并不知道,在设计阶段,我们也不需要知道。这为我们后续的工作留下了很多可以更改的空间。说不定我们会换冰箱的。

至于大象进去,同样是有讲究的。如何让大象进去,虽然这个方法的实现是有点让人头疼得,但是我们不保证我们需要自己去实现。或许我们可以自己实现,或许我们可以先实现个不怎么样的,在将来找到良好的方法后再替换调他,又或者,干脆外包出去,用个第三方办法。管它呢,只要能让大象进去,就能满足我们的需求。

最后,也是我觉得做的最好的部分。关上冰箱门!我曾经记得一句话叫做关上每一扇你所经过的门,这是生活哲理,不是软件工程的概念。但是他对软件来说是多么的重要啊。在这里,关门可以说是一语双关,不仅仅是整个设计的最后阶段,也是对整个软件开发过程的一个警钟。连后门都已经考虑到了,我敢说这个案例,比我做过的所有的作业都要好,我服输了。

其实,就我个人的理解,大象和冰箱可以被理解成很多的东西。在过程化语言中,大象是数据,冰箱是子程序。在面对对象中,大象和冰箱都是对象,我们只是在使用他们的方法。

再仔细想想吧,这设计对所有的冰箱,所有的大象都是适用的,他能够在任何场景适用,这不就是我们要的FrameWork嘛。 就比如B/S模式一样。

说的比较搓,大家见谅。。。嘿嘿。。。轻拍。

不要打脸。

大象进冰箱和软件设计的关联性相关推荐

  1. 关于大象,冰箱和软件项目报价的故事

    把大象塞进冰箱,需要几个步骤? 标准答案是:三个,第一,打开冰箱门,第二,把大象牵进冰箱,第三,关上冰箱门. 在某个软件项目的竞标会上,一家公司力克群雄,以130万元的最低价格和"完全符合客 ...

  2. Java大象进冰箱线程_把大象装进冰箱:HTTP传输大文件的方法

    上次我们谈到了HTTP报文里的div,知道了HTTP可以传输很多种类的数据,不仅是文本,也能传输图片,音频和视频. 早期互联网上传输的基本上都是只有几k大小的文本和小图片,现在的情况则大有不同.网页里 ...

  3. 看我们如何“把大象放进冰箱里”

    一.数学家的办法 转自MITBBS 把大象放到冰箱里的分析学方法 1)先把大象微分,然后把它放到冰箱里,再在冰箱里把它积分. 2)重新定义冰箱或者大象的测度(如Radon测度). 3)用Banach- ...

  4. 大象装进冰箱要几步?Python 来解答

    我想你一定知道这个小品:问把大象装冰箱需要几步? 1.打开冰箱门 2.把大象装进冰箱 3.关上冰箱门 对应的python代码: def open_ref(ref): print("打开冰箱& ...

  5. 中小企业用户如何选择简单进销存软件?

    2019独角兽企业重金招聘Python工程师标准>>> 中小企业用户如何选择简单进销存软件? 中小企业应该怎样评估选择进销存软件的性价比,下面将简单的谈一谈自己的看法: 第一, 价格 ...

  6. 层次化设计-把大象装进冰箱

    一.概述 在绝大多数的面向对象软件系统设计中,逻辑结构的深度都是非常高的. 现在流行扁平化思维,在各大框架源码中复杂的类关系.执行逻辑关系让我等萌新头皮发麻,我不禁想这些源码为什么不采用扁平化思想进行 ...

  7. 浅谈面向对象的编程思想:如何优雅地把大象装进冰箱?

      许多人刚学编程时,想必都听到过这样的话:"*语言是面向对象的,而***语言是面向过程的".那时的新人还懵懵懂懂,就被大牛或者书上的大牛骗去学了一种听起来很厉害的语言,然而学了半 ...

  8. 我是如何把大象装进冰箱里的……

    前几天在知乎看到了这样一个问题:CORNERSTONE等项目管理工具体验如何? 本来利益相关太高不准备答,但是我发现题主问的是CORNERSTONE等项目管理工具体验如何,我个人理解,题主是想问:CO ...

  9. SharePoint 2013中的视频体验增强(1)——把大象装进冰箱

    从2010这个版本,SharePoint正式开始了对视频的内置支持,使用silverligth作为其播放器.不过经过某几个项目体验之后,发现2010对视频的内置支持依然是有限的,有些功能需要自己开发来 ...

最新文章

  1. JMeter专题系列(二)录制脚本
  2. Golang实践录:开篇
  3. php 字符串循环替换字符串,php – 替换字符串中的重复字符串
  4. hdu 2844 Coins (多重背包+二进制优化)
  5. python3 yield_详解Python3中yield生成器的用法
  6. Altium Designed导出Gerber,Gerber文件所对应的层
  7. cad插件加载bplot成功用不了_AUTOCAD 能加载BatchPlot.VLX批量打印插件但是输入bplot打不开批量打印界面...
  8. 能量时域空间物理_定性半定量物理学——1.如何理解倒空间?
  9. 4.1关系运算符和逻辑运算符
  10. UI界面设计相关知识(一)
  11. Ruby + Passenger 5 分钟 入门
  12. 字符串中查找IP地址的正则表达式
  13. python爬取天猫_Python爬取天猫商品数据
  14. 微信小程序开发入门教程(一)
  15. 多线程之 ForkJoinool线程池(二十四)
  16. idea中@SpringBootApplication报红
  17. Delphi USB摄像头
  18. 马斯克的星链计划原理是什么,快跟室友一起学习一手卫星链路设计吧
  19. APP获取手机验证码防止短信轰炸解决办法
  20. 高中计算机应用面试教资真题,2019上半年高中信息技术教师资格证面试试题(精选)第五批...

热门文章

  1. 【任务分解】 向埃隆·马斯克学习任务分解
  2. 聊聊路径规划算法—快速搜寻随机树算法
  3. JS-修改图片颜色值
  4. Java批量修改文件名称(十四)
  5. 魅族计算机按键声,魅族16T按键音怎么关
  6. python如何求每一行的均值_计算每X行数的平均值
  7. python修改桌面壁纸_python设置windows桌面壁纸
  8. 彻底解决Android系统A-GPS搜不到卫星的问题!亲测!
  9. vue 拍照和上传图片
  10. 2021年上半年软考电子证书可以查询啦!