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

news/2024/4/19 4:25:31/
次日傍晚,小菜敲开了大鸟家的门。
        “回来啦!怎么样?第一天上班感受多吧。”大鸟关心的问道。
        “感受真是多哦!!!”小菜一脸的不屑一顾
        “怎么了?受委屈了吗。说说看怎么回事?”
        “委屈谈不上,就感觉公司氛围不是很好。我一大早就到他们公司,正好我的主管出去了不在公司。人事处的小杨让我填了表后,就带我到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与模式》,一本国人写的难得的好书,给出“购买”评级。


http://www.ppmy.cn/news/772952.html

相关文章

小菜编程成长记(十一 无熟人难办事?——聊设计模式迪米特法则)

http://kb.cnblogs.com/page/42260/ 作者: 伍迷 (续上篇)  次日傍晚,小菜敲开了大鸟家的门。 “回来啦!怎么样?第一天上班感受多吧。”大鸟关心的问道。 “感受真是多哦!!&#x…

Win7 安装 -- SHSUCDX can’t install 问题解决

昨天将一台老机器重新安装系统。机器型号ThinkPad T410i。以前都是用光盘安装的,但是光驱在前两年被我拆了。主要是显的太笨重了。那么就采用现在普遍的方式:制作U盘启动盘。网上查了下,采用UltraISO(软碟通)工具制作了一个U盘启动盘。制作过…

戏说面向对象程序设计

戏说面向对象程序设计 C#版 目 录 代序..............四大发明之活字印刷——面向对…

无熟人难办事?- 闲聊设计模式-迪米特法则

(续上篇) 次日傍晚,小菜敲开了大鸟家的门。 “回来啦!怎么样?第一天上班感受多吧。”大鸟关心的问道。 “感受真是多哦!!!”小菜一脸的不屑一顾。 “…

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

(续上篇) 次日傍晚,小菜敲开了大鸟家的门。 “回来啦!怎么样?第一天上班感受多吧。”大鸟关心的问道。 “感受真是多哦!!!”小菜一脸的不屑一顾。 “怎么了…

区块链知识点大全

区块链知识普及 区块链的基本内容 基本概念 1.什么是区块链 把多笔交易的信息以及表明该区块的信息打包放在一起,经验证后的这个包就是区块。 每个区块里保存了上一个区块的hash值,使区块之间产生关系,也就是说的链了。合起来就叫区块链…

回顾过去三年工作中对区块链技术的一点心得

基本概念 1.什么是区块链 把多笔交易的信息以及表明该区块的信息打包放在一起,经验证后的这个包就是区块。 每个区块里保存了上一个区块的hash值,使区块之间产生关系,也就是说的链了。合起来就叫区块链。 2.什么是比特币 比特币概念是2009年…

区块链知识普及

​​基本概念 1.什么是区块链 把多笔交易的信息以及表明该区块的信息打包放在一起,经验证后的这个包就是区块。 每个区块里保存了上一个区块的hash值,使区块之间产生关系,也就是说的链了。合起来就叫区块链。 2.什么是比特币 比特币概念…

VirtualBox创建深度技术 Ghost Win7 64位虚拟机

创建 挂载 分区 还原 转载于:https://my.oschina.net/wffger/blog/1647866

linux每日命令(23):find命令之xargs

阅读目录(Content) 1. 从当前目录下开始查找的所有文件,然后使用xargs命令来测试它们分别属于哪类文件2. 从根目录/开始查找名为core的文件或目录,并将查找结果保存到/tmp/core.log 文件中3:从当前目录下开始查找其他用户具有读、写和执行权限的文件&…

ghost克隆lvm分区linux系统,解决方法:Ubuntu14.04 dd命令克隆系统映像并将其安装在另一台计算机上...

如果要备份和还原Linux系统,则在使用ghost时通常会出现问题。后来,我发现您可以直接使用dd命令克隆并还原硬盘。 复制硬盘后,您可以将该硬盘用于其他设备。 即,“编程”已完成。 使用U盘为ubuntu14.04制作启动盘,并以livecd模式对其进行修复。步骤如下: 1.引导USB闪存驱动…

7 go http接口的使用

go 实现http客户端服务端 1 http协议 超文本传输协议(HTTP HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,它详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。 …

2020-12-30

在已经完成vs 已经和mysql连接成功的前提下 增加、删除、修改基本一致,除了sql语句 //添加用户 public static bool Add(user u) { string constr "Serverlocalhost;UserIdroot;Passwordqhj12345;Databaseqhj_asp;poolingfalse;CharSetutf8;port3306";…

怎样寻找SEO服务商,需要注意那些问题?

网上提供SEO服务的公司或个人多如牛毛,随便在搜索引擎上搜索一下,成千上万的公司就在眼前。大部分网站设计公司也兼职SEO服务,寻找合适的SEO服务商并不简单,鉴别合格的SEO服务商是关键。 1、确定外包任务 如果没有SEO团队&…

gohost -- go 开发的命令行hosts配置管理工具

前几天在微博上看到有人推荐了lazygit这个工具,让人眼前一亮,什么时候命令行也可以这么抢到了,?,调研了下,发现它使用了gocui,使用它可以做出来很多很炫的命令行工具。 现有的hosts工具里面也有switchosts…

基于OpenCV 和深度学习实现微笑检测-附免费源码

文末提供免费的源代码下载链接 我们将使用 SMILES 数据集来训练我们的卷积神经网络。一旦我们的模型训练完毕,我们将按照与上一个教程中相同的步骤来检测图像和视频中的微笑: 我们将使用 Haar 级联来检测图像中的人脸。从图像中提取人脸区域。将面部区域传递给我们的网络进行…

猿创征文|实战开发openGauss DataStudio的sql联想结构

前段时间正好完成国产数据库openGauss DataStudio的sql语句表提示功能优化,借此机会来给大家分享一下我的开发过程以及经验。 项目暂时还处于结项阶段,如果大家在中间有更好的解决思路或者经验,非常欢迎大家前来讨论交流😎 实战开…

2.3 Web应用 -- 2. HTTP 连接

2.3 Web应用 -- 2. HTTP 连接 HTTP连接的两种类型非持久性连接响应时间分析与建模持久性HTTP HTTP连接的两种类型 非持久性连接(Nonpersistent HTTP) 每个TCP连接最多允许传输一个对象HTTP 1.0版本使用非持久性连接 持久性连接(Persistent HTTP) 每个TCP连接允许传输多个对象H…

辅助性能优化——长安链性能分析工具原理及用法

如何提升区块链系统性能是很多开发者都会关注的事,但是有些对区块链并非十分熟悉的开发者可能会感到没有头绪。长安链提供了性能分析工具帮助开发者梳理系统耗时,优化系统性能。下面对长安链性能分析工具原理及使用进行介绍。 一、 概述 time_counter.s…

Excel怎么进行截图?

​ 1.如下图我们想要将表格中数据单元格区域截图保存。 ​ 2.首先我们点击【图片工具】选项 ​ 3.选中数据单元格区域,点击【选区截图】选项 ​ 4.点击【保存】选项 ​ 5.最后我们选择保存位置和保存名称即可完成 ​ 6.完成效果如下图 ​