假定我要做一个鞋架.  我曾经做过一些小的木工活,   我知道我需要的东西:   一些木头和一些基本工具:   一个卷尺,   一把锯,   一把直尺和一把锤子.   如果我要造一个房子而不是一个鞋架,   我依然需要上面这些工具(还有一些其它的).  于是我到工具店去买工具,   问销售人员锤子在哪里.

"锤子?"   销售人员问.   "现在没有人买锤子了.   这些东西已经过时了."  
  这事让我觉得奇怪,   就问他为什么.  
  "锤子有一个问题:   有那么多种锤子,   有专门打木桩的,   有拨钉子的,   也有普通的圆头锤子.   如果你买了一种锤子,   然后你发现你需要另一种锤子怎么办?   你不得不买另一把锤    
  子.   人们发现大多数人很需要一种锤子,   只要这一把锤子就可以满足各种他一生中能需要的需要锤子的地方.  
  "嗯......,   我觉得这听起来不错.   这种通用的锤子摆在哪?"  
  "不,   我们已经不卖这种锤子了.   他们已经完全过时了.   后来又发现如果只用一种锤子来做各种锤子所做的事情,   哪种做起来都不顺手.   用打桩的锤子来钉钉子不是很好用,   如果你想干掉    
  以前的女朋友,   就只有普通的锤子最好用."  
  "确实是这样.   那么现在就没有人买通用锤子了,   但现在你们又不卖以前的各种老式锤子,   那你们卖什么锤子?"  
  "事实上,   我们现在根本不卖锤子."  
  "那么...."  
  "根据我们的研究,   人们真正的需要并不是通用的锤子.   用合适的锤子来做不同的工作总是最好的.   于是我们开始销售锤子工厂,   这种工厂可以生产出你所需要的任何种类的锤子.    
  你只需要给工厂找来工人,   启动机器,   买来原料,   付水电费帐单,   你就可以马上得到你正好需要的那种锤子.  
  "但我不想买一个锤子生产工厂..."  
  "不要紧,   因为我们已经不再销售它了."  
  "但我觉得你刚才说..."  
  "我们发现大多数人不是真正需要整个一个锤子生产工厂.   比如,   有些人永远也不会需要一把圆头的普通锤子(也许他们永远不会有前任女友,   或者说他们会用冰锥来干掉他们).   所以让一些人来买一个    
  可以生产世间任何种类的锤子的工厂没什么意思."  
  "是的,   这听起来很有道理"  
  "于是,   我们开始销售锤子生产工厂的图纸,   让他们自己建造自己的锤子生产工厂,   这些工厂只生产他们需要的锤子."  
  "让我来猜猜:   你们已经不再销售这些东西了."  
  "不卖了,   当然不卖了.   后来发现人们不想只为了造几把锤子就建造一个工厂.   让工厂建造专家来建造工厂,   我从来都是这么说的!"  
  "我在这点上同意你的观点"  
  "是的.   于是我们停止销售工厂图纸,   开始销售生产锤子工厂的工厂.   每个生产锤子工厂的工厂都是由建造生产锤子工厂的工厂的顶级专家完成的,   你不必关心一个工厂建造的细节,   但你仍然可以得到一    
  个专为你订做的生产锤子的工厂,   根据你的设计,   生产出专为你订做的锤子."  
  "可是...这并不真正..."  
  "我知道你要说什么!!   ...我们这些也不卖了.   出于某些原因,   买这种生产锤子工厂的工厂的人不是很多,   所以我们针对这个问题有了一个新的解决方案."  
  "很好."  
  "我们回过头来看我们的全球工具架构,   我们断定人们在管理生产锤子工厂的工厂,   以及它生产出来的生产锤子的工厂的时侯,   他们遇到了很多挫折.   如果人们同时管理一个生产卷尺的工厂的工    
  厂,   一个生产锯子工厂的工厂,   和一个生产直尺工厂的工厂,   还不用说木材加工和管理工厂,   那么这种负担会变得很头痛.   当我们认真审视这种情况的时侯,   我们觉得对于某些    
  只想做个鞋架的人来说这太复杂了."  
  "是这样,   不开玩笑"  
  "于是这个星期我们推出了一个通用工具制造工厂的工厂的工厂,   这样你的所有不同的工具生产工厂的工厂就可以从这个唯一的工厂里生产出来.   这个工厂的工厂的工厂会只生产出你真正需要的生产工具    
  的工厂的工厂;   然后每个工具工厂的工厂会根据你的需要只生产出一个你需要的工具工厂.   最后生产出来的工具会是你这个项目的最理想的工具.   你会得到正是你想要的锤子,    
  正是你想要的卷尺,   所有这些只需要按一个按钮(虽然你可能必须发布几个新的配置文件来使所有的工作按照你的预期来完成)."  
  "那么你们不卖锤子吗?   什么样的都没有?"  
  "没有.   如果你真的需要一个高质量,   工业标准生产出来的鞋架,   你绝对需要一些高级的东西,   而不是一个从破工具店买来的锤子."  
  "所有的人现在都这样做吗?   人们只要需要一个锤子,   就都在用通用工具生产工厂的工厂的工厂?"  
  "正是."  
  "嗯...好吧.   我猜我也必须这样做,   如果现在事情都是这样做的,   我最好还是学会怎么做."  
  "你真了不起!!"  
  "这个东西带了文档,   对吧?"

转载于:https://www.cnblogs.com/JoeDZ/archive/2008/09/11/1289331.html

我为什么憎恨Framework相关推荐

  1. Tengine Framework基础

    Tengine Framework基础 最受开发者喜爱的边缘AI计算框架 Tengine是OPEN AI LAB推出的自主知识产权的边缘AI计算框架,致力于解决AIoT产业链碎片化问题,加速AI产业化 ...

  2. EF-Entity Framework 相关技术点收集贴

    不定期.偶尔.添加更新 在网络上看到或者自己开发过程中碰到的EF-Entity Framework相关技术点 本文地址:http://www.cnblogs.com/vnii/archive/2012 ...

  3. Qt Installer Framework实战

    Qt Installer Framework是Qt发布的安装程序支持框架,只需要简单的配置就可以生成安装文件,同时可以通过javascript脚本来定制安装过程. 目录结构 config packag ...

  4. 在虚拟机中 windows 2003 装.net framework 3.5 出现问题.

    错误信息: [11/27/09,08:52:50] Microsoft .NET Framework 2.0a: [2] Error: Installation failed for componen ...

  5. .Net Framework 3.0 概述

    Microsoft .NET Framework 3.0, the managed programming model for Microsoft® Windows®, includes the .N ...

  6. MIS开发中.net Framework的打印功能

    Microsoft .net Framework的打印功能都以组件的方式提供,为程序员提供了很大的方便,但是这几个组件的使用还是很复杂的,有必要解释一下. 打印操作通常包括以下四个功能 1 打印设置 ...

  7. python导入matplotlib出错_解决导入matplotlib的RuntimeError: Python is not installed as a framework....

    import matplotlib.pyplot as plt 报错: RuntimeError: Python is not installed as a framework. The Mac OS ...

  8. ios Standard Framework和Umbrella Framework

    Standard Framework:标准库,通过引用对应的header文件而不是引用master header 文件来引用类(也可以通过引用Master Header file来引用需要使用的类), ...

  9. ios .framework动态库重签名

    真机上运行.framework时,如果报 dyld'dyld_fatal_error:dyld: Library not loaded: @rpath/XX.framework/XXReference ...

  10. ios .a和.framework

    创建Aggregate来合并模拟器和真机通用的framework 然后在Build Phases下New Run Script Phase创建合并脚本: # Constants SF_TARGET_N ...

最新文章

  1. io.h源码 检查文件是否存在
  2. Intel 公开安全新特性:CET
  3. python编程基础_月隐学python第一课
  4. 微信小程序入门二: 条件、遍历、网络请求、获取本地图片
  5. C++ 面向对象程序三大特性之 继承
  6. stata 线性回归分析基本操作
  7. csv逗号分隔符转换_机器学习Python实践——数据导入(CSV)
  8. eplan加密狗已损坏_EPLAN Electric P8 仿真加密狗 error 1068 问题
  9. 224秒!ImageNet上训练ResNet-50最佳战绩出炉,索尼下血本破纪录
  10. 取消IDEA保存文件,默认删除行尾空格
  11. [吴恩达机器学习笔记]16推荐系统5-6协同过滤算法/低秩矩阵分解/均值归一化
  12. UGUI的Button和Toggle
  13. 12月上旬全球域名总量新增1.8万 环比减少84%
  14. IDEA java 显示build目录
  15. NodeJS stream 一:Buffer
  16. item_get - 根据ID取聚美优品商品详情
  17. 14款免费的GIF制作软件(转载)
  18. 数字系统的设计层级(行为级、RTL、门级)
  19. WebLogic启动服务卡住报错 :Server started in RUNNING mode
  20. 不再羡慕小说中的爱情...

热门文章

  1. ORACLE 發送郵件(全)
  2. Glusterfs分布式
  3. 网络工程师HCIE-RS-ipv6第一节:IPv6地址(原理+实验)
  4. php 图像居中裁剪函数,PHP 实现的自定义图像居中裁剪函数示例
  5. 游戏开发之友元类和友元函数(C++基础)
  6. OSPF路由控制原理与实验
  7. 关于C# winform开发时datagridview图片显示异常的处理
  8. CSS元素隐藏原理和效果小结
  9. 求助:使用foreach函数获取到后台数据时未在表格上渲染的问题
  10. 为什么我建议你这样实现MySQL分页