次日傍晚,小菜敲开了大鸟家的门。
        “回来啦!怎么样?第一天上班感受多吧。”大鸟关心的问道。
        “感受真是多哦!!!”小菜一脸的不屑一顾
        “怎么了?受委屈了吗。说说看怎么回事?”
        “委屈谈不上,就感觉公司氛围不是很好。我一大早就到他们公司,正好我的主管出去了不在公司。人事处的小杨让我填了表后,就带我到IT部领取电脑,她向我介绍了一个叫‘小张’的同事认识,说我跟他办领取电脑的手续就可以了。小张还蛮客气,正打算要装电脑的时候,来了个电话,叫他马上去一个客户那里处理PC故障,他说要我等等,回来帮我弄。我坐了一上午,都没有见他回来,但我发现IT部其实人还有两个人,他们都在电脑前,一个忙于QQ,一个好象在看新闻。我去问人事的小杨,可不可以请其他人帮我办理领取手续,她说她现在也在忙,让我自己去找一下IT部的小李,他或许有空。我又返回IT部办公室,问小李帮忙,小李先是忙着回了两个QQ后才接过我领取电脑的单子,看到上面写着‘张XX’负责电脑领取安装工作,于是说这个事是小张负责的,他不管,叫我还是等小张回来再做吧。我就这样又像皮球一样被踢到桌边继续等待,还好我带着一本《重构》在看,不然真要郁闷死。小张快到下班的时候才回来,开始帮我装系统,加域,设置密码等,其实也就Gohost恢复再设置一下,差不多半小时就弄好了。”小菜感叹的说道,“就这样,我这人生一个最重要的第一次就这么渡过了。”
        “哈哈,就业、结婚、生子,人生三大事,你这第一大事的第一次是够郁闷的。”大鸟同情道,“不过现实社会就是这样的,他们又不认识你,不给你面子,也是很正常的。就象现在曹启泰主持的电视《上班这点事》节目,当中可聊可学之事还真不少,上班可不是上学,复杂着呢。罢了罢了,谁叫你运气不好,你的主管在公司,事情就会好办多了。”
       “不过,这家公司让你感觉不好原因在于管理上存在一些问题。”大鸟接着说,“这倒是让我想起来我们设计模式的一个原则,你的这个经历完全可以体现这个原则观点。”
       “哦,是什么原则?”小菜情绪被调动了起来,“你怎么什么事都可以和软件设计模式搭界呢?”
       “ ,大鸟我显然不是吹出来的……”大鸟洋洋得意道。
       “啧啧,行了行了,大鸟你强!!!不是吹的,是天生的! ,快点说说,什么原则?”小菜对大鸟的吹鸟腔调颇为不满,希望快些进入正题。
       “你到了公司,通过人事部小杨,认识了IT部小张,这时,你已认识了两个人。但因没人介绍你并不认识IT部小李。而既然小张小李都属于IT部,本应该都可以给你装系统配帐号的,但却因小张有事,而你又不认识小李,而造成你的人生第一次大大损失,你说我分析得对吧?”
       “你这都是废话,都是我告诉你的事情,哪有什么分析。”小菜失望道。
       “如果你同时认识小张和小李,那么任何一人有空都可以帮你搞定了,你说对吧?”
       “还是废话。”
       “这就说明,你如果把人际关系搞好,所谓‘无熟人难办事’,你在IT部‘有人’,不就万事不愁了吗?”大鸟一脸坏笑
       “大鸟,你到底想说什么?我要是有关系,对公司所有人都熟悉,还用得着你说呀。”
       “小菜,瞧你急的,其实我想说的是,如果IT部有一个主管,负责分配任务,不管任何需要IT部配合的工作都让主管安排,不就没有问题了吗?”大鸟开始正经起来。
       “你的意思是说,如果小杨找到的是IT的主管,那么就算小张没空,还可以通过主管安排小李去做,是吗?”
       “对头(四川方言发音)。”大鸟笑着鼓励道。
       “我明白了,关键在于公司里可能没有IT主管,他们都是找到谁,就请谁去工作,如果都熟悉,有事可以协调着办,如果不熟悉,那么就会出现我碰到的情况了,有人忙死,有人空着,而我在等待。”
       “没有管理,单人情协调也很难办成事的。如果公司IT部就一个小张,那什么问题也没有,只不过效率低些。后来再来个小李,那工作是叫谁去做呢?外人又不知道他们两人谁忙谁闲的,于是抱怨、推诿、批评就随风而至。要是三个人在IT部还没有管理人员,则更加麻烦了。正所谓一个和尚挑水吃,两个和尚抬水吃,三个和尚没水吃。”
       “看来哪怕两个人,也应该有管理才好。我知道你的意思了,不过这是管理问题,和设计模式有关系吗?”
       “急什么,还没讲完呢?就算有IT主管,如果主管正好不在办公室怎么办呢?公司几十号人用电脑,时时刻刻都有可能出故障,电话过来找主管,人不在,难道就不解决问题了?”
       “这个,看来需要规章制度,不管主管在不在,谁有空先去处理,过后汇报给主管,再来进行工作协调。”小菜也学着分析起来。
       “是呀,就像有人在路上被车撞了,送到医院,难道还要问清楚有没有钱才给治疗吗,‘人命大于天’,同样的,在软件公司,‘电脑命大于天’,开发人员工资平均算下来每天按数百记的,耽误一天半天,实在是公司的大损失呀——所以你想过应该怎么办?”
       “我觉得,不管认不认识IT部的人,我只要电话或亲自找到IT部,他们都应该想办法帮我解决问题。”
       “好,说得没错,那你打电话时,怎么说呢?是说‘经理在吗?……小张在吗?……’,还是‘IT部是吧,我是小菜,电脑已坏,再不修理,软件歇菜。’”
      “ ,当然是软件歇菜来得更好!你这家伙,就拿我开心!”
      “这样子的话,公司不管任何人,找IT部就可以了,不管认识不认识人,反正他们会想办法找人来解决。”
      “哦,我明白了,我真的明白了。你的意思是说,IT部代表是抽象类或接口,小张小李代表是具体类,之前你在分析 会修电脑不会修收音机里讲的依赖倒置原则,即面向接口编程,不要面向实现编程就是这个意思?”小菜 ,兴奋异常。
      “当然,这个原则也是满足的,不过我今天想讲的是另一个原则:‘ 迪米特法则(LoD)’ 也叫最少知识原则,简单的说,就是如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。其实道理就是你今天碰到的这个例子,你第一天去公司,怎么会认识IT部的人呢,如果公司有很好的管理,那么应该是人事的小杨打个电话到IT部,告诉主管安排人给小菜你装电脑,就算开始是小张负责,他临时有急事,主管也可以再安排小李来处理,如果小李当时不忙的话。其实 迪米特法则还是在讲如何减少耦合的问题,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及。也就是说,信息的隐藏促进了软件的复用。”
        “明白,由于IT部是抽象的,哪怕里面的人都离职换了新人,我的电脑出问题也还是可以找IT部解决,而不需要认识其中的同事,纯靠关系帮忙了。就算需要认识,我也只要认识IT部的主管就可以了,由他来安排工作。”
       “小菜动机不纯吗!你不会是希望小李快些被炒鱿鱼吧?哈!”大鸟瞧着小菜笑道
       “去!!!我是那样的人吗?好了,你昨天说过,要我改商场收银代码为三层架构,有些麻烦的。我得想想。”

(待续)
注:有回复说到《小菜编程成长记》系列讲问题不透,其实这是正常的,毕竟这不是上课,而是在写对话,聊天而已,建议看文章后若有学习的想法再去搜索相关主题研究,千万不能认为看了小菜系列就可以学懂设计模式。伍迷更希望是在你工作学习辛苦这余,看看《小菜》系列,调剂一下笑笑而已。另:本文迪米特法则知识来自《Java与模式》,一本国人写的难得的好书,给出“购买”评级。

(转帖)小菜编程成长记(十二 无熟人难办事?——聊设计模式迪米特法则)相关推荐

  1. [转][荐]小菜编程成长记系列

    一 面试受挫--代码无错就是好? 小菜今年计算机专业大四了,学了不少软件开发方面的东西,也学着编了些小程序,踌躇满志,一心要找一个好单位.当投递了无数份简历后,终于收到了一个单位的面试通知,小菜欣喜若 ...

  2. 小菜编程成长记(一 面试受挫——代码无错就是好?)

    小菜今年计算机专业大四了,学了不少软件开发方面的东西,也学着编了些小程序,踌躇满志,一心要找一个好单位.当投递了无数份简历后,终于收到了一个单位的面试通知,小菜欣喜若狂.         到了人家单位 ...

  3. C语言编程>第二十二周 ④ 从键盘输入一组小写字母,保存在字符数组str中,请补充fun函数,该函数的功能是:把字符数组str中字符下标为偶数的小写字母转换成对应的大写字母,结果仍保存在原数组

    例题:从键盘输入一组小写字母,保存在字符数组str中,请补充fun函数,该函数的功能是:把字符数组str中字符下标为偶数的小写字母转换成对应的大写字母,结果仍保存在原数组中. 例如,输入 " ...

  4. C语言编程>第二十二周 ⑥ 请补充fun函数,该函数的功能是:把字符下标能被2和3同时整除的字符从字符串s中删除,把剩余的字符重新保存在字符串s中。

    例题:请补充fun函数,该函数的功能是:把字符下标能被2和3同时整除的字符从字符串s中删除,把剩余的字符重新保存在字符串s中.字符串s从键盘输入,其长度作为参数传入fun函数. 例如,输入 " ...

  5. C语言编程>第二十二周 ③ 下列给定的程序中,函数fun的功能是根据整型形参n,计算如下公式的值:

    例题:下列给定的程序中,函数fun的功能是根据整型形参n,计算如下公式的值: 例如,若n=1000,则应输出0.000155. 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构. 代码 ...

  6. 难得的巧记十二个月的单词

    巧记十二个月份的单词,需要从谐音.文化等方面入手,这里可以具体归纳成如下几点 January 一月 February 二月 March 三月 April 四月 May 五月 June July Aug ...

  7. C语言编程>第十二周 ③ 已知学生的记录由学号和学习成绩构成,M名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数。

    已知学生的记录由学号和学习成绩构成,M名学生的数据已存入a结构体数组中.请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分).已给出函数的首部,请完成该函 ...

  8. C语言编程>第二十二周 ① 下列给定程序中,函数fun的功能是:找出一个大于给定整数n且紧随n的素数,并作为函数值返回。

    例题:下列给定程序中,函数fun的功能是:找出一个大于给定整数n且紧随n的素数,并作为函数值返回. 例如,输入 整数为32,则输出的数素数为37". 注意:不要改动main函数,不能增行或删 ...

  9. 高级shell编程笔记(第十二章 外部过滤器,程序和命令)

    第十二章 外部过滤器,程序和命令 标准的UNIX命令使得脚本更加灵活.通过简单的编程结构把shell指令和系统命令结合起来,这才是脚本能力的所在. 12.1 基本命令 新手必须掌握的初级命令 ls 基 ...

  10. 敏捷开发“松结对编程”系列之十二:L型代码结构(质量篇之一)

    本文是"松结对编程"系列的第十二篇.(松结对编程栏目目录) 有没有一种管理方法,无需额外的测试活动,就能大幅度提高产品质量?L型代码结构就是其中一种候选方案. 缺陷的来源 要减少缺 ...

最新文章

  1. INSTALL_FAILED_TEST_ONLY
  2. OpenCV中图像修复技术介绍与演示
  3. HDU 2564 词组缩写
  4. Mysql8.0.20下载和安装
  5. mysql error 1114,mysql error 1114 table is full 处理分享
  6. C语言中#define中的一些特殊用法
  7. Windows 怎么了?微软又停止一大版本更新
  8. keras对MNIST数据集分类
  9. pmp学习资料_201912期PMP学习内容汇总表
  10. 教你如何把书本上的字快速弄到电脑上
  11. vs2010插件之VisualSVN
  12. win7 微信 代理服务器设置,手把手为你讲解win7系统电脑登录多个微信的详细方法...
  13. Oracle数据库有哪些应用结构?
  14. 问卷分析之SPSS相关分析、相关系数矩阵(Pearson)
  15. What is road rage?
  16. SQL之对EXISTS谓词的理解
  17. DOS下显示JPG/JPEG图像文件
  18. 或许微软真的错了,全端 App 的时代要到来了
  19. 自定义表单、自定义流程、自定义页面、自定义报表应用开发平台
  20. 男子与女友争吵后将10公斤重电脑椅从15楼扔下 获刑6个月

热门文章

  1. 用 java编写 金字塔_用Java打印金字塔
  2. 计算机408专业考研真题,2021年计算机考研408历年真题及答案
  3. 免费IP切换工具有用吗?
  4. java实现图片反色处理代码示例
  5. linux fdisk指定ext4,如何在Linux中创建新的Ext4文件系统(分区)
  6. 【验证码识别】OpenCV挑战顶象滑动拼图验证码
  7. 应急指挥中心整体建设方案(ppt)
  8. python反爬虫策略ppt_关于反爬虫策略
  9. 2016vijos 1-1 兔子的字符串(后缀数组 + 二分 + 哈希)
  10. linux ascii游戏,linux – Bash ASCII实现