伍迷家园

让编程融入生活
随笔 - 92, 文章 - 0, 评论 - 2113, 引用 - 172
数据加载中……

小菜编程成长记(十 会修电脑不会修收音机?——聊设计模式原则)

 (续上篇)
         小菜学会了反射后,正在兴奋,想着大鸟的问题。此时,突然声音响起。
      “死了都要爱,不淋漓尽致不痛快,感情多深只有这样,才足够表白。死了都要爱……”
       原来是小菜的手机铃声,大鸟吓了一跳,说道:”你小子,用这歌做铃声,吓唬人啊!这要是在公司开大会时响起,你要被领导淋漓尽致爱死!MD,还在唱,快接!”
       小菜很是郁闷,拿起手机一看,一个美女来的电话,由,马上接通了手机,“喂!”
      “小菜呀,我是娇娇我电脑坏了你快点帮帮我呀!”手机里传来急促的女孩声音。
      “哈,是你呀,你现在好吗?最近怎么不和我聊天了?”小菜慢条斯理的说道。
      “快点帮帮我呀,,电脑不能用了啊!”娇娇略带哭腔的说。
      “别急别急,怎么个坏法?”
      “每次打开QQ,一玩游戏,机器就死了。出来蓝底白字的一堆乱七八糟的英文,过一会就重启了,再用QQ还是一样。怎么办呀?”
      “哦,明白了,蓝屏死机吧,估计内存有问题,你的内存是多少兆的?”
      “什么内存多少兆,我听不懂呀,你能过来帮我修一下吗?”
      “啊,你在金山,我在宝山,虽说在上海两地名都钱味儿十足,可两山相隔万重路呀!现在都晚上了,又是星期一,周六我去你那里帮你修吧!”小菜无耐的说。
     “要等五天那不行,你说什么蓝屏?怎么修法?”娇娇依然急不可待。
     “蓝屏多半内存坏了,你要不打开机箱看看,或许有两个内存,可以拔一根试试,如果只有一根内存,那就没戏了。”
     “机箱怎么打开呢?”娇娇开始认真起来。
     “这个,你找机箱后面,四个角应该都有螺丝,靠左侧边上两个应该就可以打开左边盖了。”小菜感觉有些费力,远程手机遥控修电脑,这是头一次。
     “我好象看到了,要不先挂电话,我试试看,打开后再打给你。”
     “哦,好的。”小菜正说着,只听娇娇边嘟囔着“老娘就不信收拾不了你这破电脑”边挂掉了电话。

     “呵!”小菜长出一口气,“不懂内存为何物的美眉修电脑,强!”
     “你小子,人家在困难时刻想得到你,说明心中有你,懂吗?这是机会!”大鸟说道。
     “这倒也是,这小美眉长得蛮漂亮的,我看过照片。就是脾气大些,不知道有没有男朋友了。”
     “切,你干吗不对她说,‘你可以找男友修呀’,真是没脑子,要是有男友,就算男友不会修也要男友找人搞定,用得着找你求助呀,笨笨!”大鸟嘲笑道,“你快把你那该死的手机铃声换掉——死了都要爱,死了还爱个屁!”
     “噢!知道了。”

      十分钟后。

     “我在这儿等着你回来,等着你回来,看那桃花开。我在这儿等着你回来,等着你回来,把那花儿采……”小菜的手机铃声再次响起。
      “菜花痴,你就不能找个好听的歌呀。”大鸟气着说道。
     “好好好,我一会改,一会改。”小菜拿起手机,一副很听话的样子,嘴里却跟着哼“我在这儿等着你回来哎”,把手机放到耳边。
      “小菜,我打开机箱了,快说下一步怎么走!”娇娇仍然着急着说。
     “你试着找找内存条,内存大约是10公分长,2公分宽,上有多个小长方形集成电路块的长条,应该是竖插着的。”小菜努力把内存样子描述得容易理解。
       “我看到一个风扇,没有呀,在哪里?”娇娇说道,“哦,我找到了,是不是很薄,很短的小长条?咦,怎么有两根?”
       “啊,太好了,有两根估计就能解决问题了,你先试着拔一根,然后开机试试看,如果还是死机,再插上,拨另一根试,应该总有一根可以保证不蓝屏。”
      “我怎么拨不下来呢?”
      “旁边有卡子,你扳开再试。”
      “嗯,这下好了,你别挂,我这就重启看看。”

         十分钟后。

       “哈,没有死机了啊,小菜,你太厉害了,我竟然可以修电脑了,要我怎么感谢你呢!”娇娇兴奋地说
      “最好以身相许吧,”小菜心里这么遐想着,口中却谦虚地说:“不客气,都是你聪明,敢自己独自打开机箱修电脑的女孩很少的。你把换下的内存去电脑城换掉,就可以了。”
      “我不懂的,要不周六你帮我换?周六我请你吃饭吧!”
      “这怎么好意思——你说在什么时间在哪碰面?”小菜假客气着,却不愿意放弃机会。
      “周六下午5点在徐家汇太平洋数码门口吧。”
      “好的,没问题。”
      “今天真的谢谢你,那就先Bye-Bye了!”
      “嗯,拜拜!”

      “小菜走桃花运了哦,”大鸟有些羡慕道,“那铃声看来有些效果,不过还是换掉吧,俗!”
     “嘿嘿,你说也怪,修电脑,这在以前根本不可能的事,怎么就可以通过电话就教会了,而且是真的修到可以用了呢。”
     “你有没有想过这里的最大原因?”大鸟开始上课了。
     “蓝屏通常是内存本身有问题或内存与主板不兼容,主板不容易换,但内存却只需要更换就可以了,而且换起来很容易。”
     “如果是别的部件坏了,比如硬盘,显卡,光驱等,是否也只需要更换就可以了?”
     “是呀,确实很方便,只需要懂一点点计算机知识,就可以试着修电脑了。”
     “想想和我们编程有什么联系?”
     “你的意思是——面向对象?”
     “说说看,面向对象的四个好处?”
     “这个我记得最牢了,就是活字印刷那个例子啊,是可维护、可扩展、可复用和灵活性好。我知道了,可以把PC电脑理解成是大的软件系统,任何部件如CPU、内存、硬盘,显卡等都可以理解为程序中封装的类或程序集,由于PC易插拨的方式,那么不管哪一个出问题,都可以在不影响别的部件的前题下进行修改或替换。”
     “PC电脑里叫易插拨,面向对象里把这种关系叫什么?”
     “应该是叫强内聚、松耦合吧。”
     “对的,非常好,我们电脑里的CPU全世界也就是那么几家生产的,大家都在用,可是就是不知道Intel/AMD等是如何做出这个小东西。去年国内不是还出现了汉芯造假的新闻吗!这就说明CPU的强内聚的确是强。但它又独自成为了产品可以在千千万万的电脑主板上插上就可以使用,这是什么原因?”大鸟又问。
       “因为CPU的对外都是针脚式或触点式等标准的接口。啊,我明白了,这就是接口的最大好处。CPU只需要把接口定义好,内部再复杂我也不让外界知道,而主板只需要预留与CPU针脚的插槽就可以了。”
       “很好,你已经在无意的谈话间提到了设计模式其中的几大设计原则,单一职责原则,开放—封闭原则,依赖倒转原则(参考《敏捷软件开发——原则、模式与实践》)”大鸟接着讲道,“所谓单一职责原则,就是指就一个类而言,应该仅有一个引起它变化的原因,就刚才修电脑的事,显然内存坏了,不应该成为更换CPU的理由。开放—封闭原则是说对扩展开发,对修改关闭,通俗的讲,就是我们在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展,换句话说就是,应当可以在不必修改源代码的情况下改变这个模块的行为。比如内存不够只要插槽多就可以加,比如硬盘不够了,可以用移动硬盘等,PC的接口是有限的,所以扩展有限,软件系统设计得好,却可以无限的扩展。依赖倒转原则,原话解释是抽象不应该依赖细节,细节应该依赖于抽象,这话绕口,说白了,就是要针对接口编程,不要对实现编程,无论主板、CPU、内存、硬盘都是在针对接口编程,如果针对实现编程,那就会出现换内存需要把主板也换了的尴尬。你想在小MM面前表现也就不那么容易了。所以说,PC电脑硬件的发展,和面向对象思想发展是完全类似的。这也说明世间万物都是遵循某种类似的规律,谁先把握了这些规律,谁就最早成为了强者。” 
        “还好,她没有问我如何修收音机,收音机里都是些电阻、三极管,电路板等等东东,我可不会修的。”小菜庆幸道。
       “哈,小菜你这个比方打得好,”大鸟开心的说,“收音机就是典型的耦合过度,只要收音机出故障,不管是声音没有、不能调频、有杂音,反正都很难修理,不懂的人根本没法修,因为任何问题都可能涉及其它部件。非常复杂的PC电脑可以修,反而相对简单的收音机不能修,这其实就说明了很大的问题。当然,电脑的所谓修也就是更换配件,CPU或内存要是坏了,老百姓是没法修的。其实现在在软件世界里,收音机式强耦合开发还是太多了,比如前段时间某银行出问题,需要服务器停机大半天的排查修整,这要损失多少钱。如果完全面向对象的设计,或许问题的查找和修改就容易得多。”
       “是的是的,我听说很多银行目前还是纯C语言的面向过程开发,非常不灵活,维护成本是很高昂的。”
      “那也是没办法的,银行系统哪是说换就换的,所以现在是大力鼓励年轻人学设计模式,直接面向对象的设计和编程,从大的方向上讲,这是国家大力发展生产力的很大保障呀。”
     “大鸟真是高瞻远瞩呀,我对你的敬仰犹如滔滔江水,连绵不绝!”小菜怪笑道,“我去趟WC”。
      
     “浪奔,浪流,万里江海点点星光耀,人间事,多纷扰,化作滚滚东逝波涛,有泪,有笑…………”
     “小菜,电话。小子,怎么又换成上海滩的歌了,这歌好听。”大鸟笑道,“刚才是死了都要爱,现在是为爱复仇而死。你怎么找的歌都跟爱过不去呀。快点,电话,又是刚才那个叫娇娇的小MM的。”
     “来了来了,尿都只尿了一半!”小菜心急地接起电话,“喂!”
     “小菜呀,我家收音机坏了,你能不能教我修修呢!”

(待续)
 

posted on 2007-03-23 12:15 伍迷 阅读(6380) 评论(47)  编辑 收藏 所属分类: 面向对象小菜编程成长记

评论

#1楼   回复  引用  查看    

呵呵,喜欢这样的文章,什么时候软件也能像硬件一样易拔插,甚至热拔插呢?虽然我们完全可以做到,但真正做到的却不多
2007-03-23 12:36 | 阿武      

#2楼   回复  引用  查看    

Vista 启动QQ出现蓝屏是怎么回事。
2007-03-23 12:50 | Artech      

#3楼[楼主]   回复  引用  查看    

@Artech
这只是杜撰,对于小MM来说,玩QQ游戏时出问题显得真实些,蓝屏大多和硬件有关,与软件关系不大。我总不能说她是打开了VS2005而蓝屏吧。本故事来自伍迷真实事件,有所感悟,所以做了些改变后而写。相信常在IT里混的朋友都有帮朋友、特别是女性朋友修电脑的经历,也会有同感吧。
2007-03-23 12:58 | 伍迷      

#4楼   回复  引用  查看    

好文章
2007-03-23 13:02 | lingyun_k      

#5楼   回复  引用    

支持

例子举得很想象,写得很棒

以后会常来关注

2007-03-23 13:03 | sopper[未注册用户]

#6楼   回复  引用    

有意思。。
2007-03-23 13:03 | teana[未注册用户]

#7楼   回复  引用    

好文
2007-03-23 13:04 | teana[未注册用户]

#8楼   回复  引用  查看    

@伍迷
我很喜欢你的写作风格!以一种调侃的方式讲明一个深奥的问题。我一直在试图如何以一种让每个人都懂得语言来向大家分享我所得理解的.NET。你给了一种启发。
我装的Vista Enterprise Edition,我只要的一运行QQ,必死。我看到到网上也有很多相似的经历,想借用你这个帖子,问问是什么原因。
2007-03-23 13:16 | Artech      

#9楼[楼主]   回复  引用  查看    

@Artech
不好意思,不懂。

本故事纯属虚构,若有和我文章中死机经历雷同,实属巧合,特此声明。
2007-03-23 13:21 | 伍迷      

#10楼   回复  引用  查看    

喜欢这样的写作风格,呵呵
2007-03-23 13:21 | 非我      

#11楼   回复  引用  查看    

喜欢,希望快点出十一
2007-03-23 14:11 | 一滴水      

#12楼   回复  引用    

投到电脑报应该还是很受欢迎的吧?
2007-03-23 14:11 | Apple[未注册用户]

#13楼   回复  引用  查看    

@Artech
这是微软改了接口...
QQ 输入密码的那个框 直接调用了一个底层的api...
2007-03-23 14:15 | iCaca      

#14楼   回复  引用  查看    

面向接口编程比面向对象编程需要更高的设计,否则很容易出现在Vista上运行QQ出错这样的问题。解决方法就是升级了操作系统,软件也要跟着升级。
就是说接口一旦变了,改动更大。
2007-03-23 16:08 | 金色海洋(jyk)      

#15楼   回复  引用    

LZ和我住同一个区呢..哈哈,我也宝山

#16楼   回复  引用  查看    

@金色海洋(jyk)
@iCaca
谢谢,今天回去升级!
2007-03-23 18:00 | Artech      

#17楼   回复  引用    

老大 我面向对象编程的思想还不行 能不能在这方面多介绍点
还有一般设计框架 搭建网站框架的时候改如何做?
一般的流程是什么 什么UML 定义接口 什么的
我基本上没有用到过
2007-03-23 18:41 | Apple[未注册用户]

#18楼   回复  引用  查看    

美女好啊
2007-03-23 18:49 | Jeffrey Zhao      

#19楼[楼主]   回复  引用  查看    

@Apple
建议从最基础学起,比如去弄懂封装、继承和多态的基本编程表现方式和其优缺点,然后再看看设计模式的相关书籍。
虽然我尽量用简单的语言来讲设计模式,不过如果继承多态不理解的话,估计还是可能看不太懂的。
2007-03-23 18:57 | 伍迷      

#20楼   回复  引用  查看    

^__^
2007-03-24 08:27 | 小哈      

#21楼   回复  引用    

美女好啊

#22楼   回复  引用    

看是都能看懂的
只是觉得平时我们写代码的时候不够面向对象 都是把复杂的问题分成很多简单的步骤一步一步实现 是过程化的编程 这样维护 扩展就很头疼了 我想我是 而已很多人都是类库的使用者 而不是类库的设计者 就是说我们不明白软件的架构 希望您能再介绍点软件架构方面的 教会大家一些思想
我们平时做程序的时候 都是先设计数据库 然后根据数据库生成实体层、数据访问层 但是我们都没有使用UML建模 一开始设计的时候就没有面向对象了 而且现在网上很多设计的都是C/S的 能举些B/S的面向对象设计 编程的例子吗?
还有些公司 比如(discuz设计的.NET论坛)他们怎么不用MS提供的数据控件 都自己写 或者 直接写在页面里呢 很不明白?
请各位大侠多指教
我是菜鸟 所以问的问题都很菜 见笑:-)
2007-03-24 12:13 | Apple[未注册用户]

#23楼   回复  引用    

要针对接口编程,不要对实现编程,无论主板、CPU、内存、硬盘都是在针对接口编程,如果针对实现编程,那就会出现换内存需要把主板也换了的尴尬。

该如何面向接口编程呢?
2007-03-24 12:24 | Apple[未注册用户]

#24楼   回复  引用    

写2篇web软件架构方面的吧
2007-03-24 19:43 | Apple[未注册用户]

#25楼   回复  引用    

赞阿,继续等待看下去;作者加油哈
2007-03-26 11:42 | SnowDoggie[未注册用户]

#26楼   回复  引用  查看    

生动!
2007-03-26 14:32 | YanziMyWife      

#27楼   回复  引用    

好文好文,继续等下文。

收音机的电路其实也是模块化的,接收,品质调节,放大,很清晰的,其实很容易查出来毛病的。不过这不影响文章的理解。
2007-03-26 14:59 | SnowDoggie[未注册用户]

#28楼[楼主]   回复  引用  查看    

@SnowDoggie
说得有道理,收音机每个部分其实分得也很清楚,不过本人的确是不会修收音机,而且收音机模块间耦合度较高,不能实现类似PC那样的即插即用,所以应该说是收音机的面向对象设计没有PC那么彻底。
2007-03-26 15:04 | 伍迷      

#29楼   回复  引用    

呵呵,挺好的。

其实要想找个绝对没有漏洞的例子很辛苦的,而关键在文章本身能说明问题,体现作者意图就已经足够了。

昨天朋友一起爬山时候还讨论了你的文章风格,其实最有用的还是你这类的寓教于乐,步步深入的风格;阳春白雪的经典虽然是经典,却不亲民
2007-03-26 15:26 | SnowDoggie[未注册用户]

#30楼[楼主]   回复  引用  查看    

@SnowDoggie
谢谢,我会针对《小菜编程成长记》的写作风格写一篇对话。谈谈我的想法。
2007-03-26 16:11 | 伍迷      

#31楼   回复  引用  查看    

写的承上启下,始终有一主干线贯穿,作者的文字功底很强啊!
2007-03-27 13:22 | Ame      

#32楼[楼主]   回复  引用  查看    

@Ame
谢谢夸奖。这种文章可以娱乐一下,不能当真。
2007-03-27 13:53 | 伍迷      

#33楼   回复  引用    

呵呵 伍迷不仅程序写的好,而且还有文学天赋,佩服!
2007-03-29 12:56 | wuyisky[未注册用户]

#34楼[楼主]   回复  引用  查看    

@wuyisky
惭愧惭愧,就是平时爱吹并且最近吹得凶了些而已。谢谢赞赏!
2007-03-29 13:09 | 伍迷      

#35楼   回复  引用  查看    

伍迷
真的是太棒了,我原来看一些有关设计模式的,都觉得太抽象,根本就不能理解,也不知道啥时候能用上,经过你写的这些文章,真的感觉知道了些,而且文笔非常的幽默,享受!
Thx ^_^
支持!
有个建议,慢慢的把所有的设计模式都聊聊!
2007-04-04 11:49 | Bryant      

#36楼   回复  引用  查看    

写的真经典呀,易懂,通俗,呵呵。
2008-02-20 09:22 | 无名小卒      

#37楼   回复  引用    

绝对经典的 面向对象 科普读物,学习敬仰中......
2008-03-18 21:38 | pcbird[未注册用户]

#38楼   回复  引用    

经典 最好的教学方法来源于对生活的感悟!
2008-05-23 10:36 | 念时回复[未注册用户]

#39楼   回复  引用  查看    

如果学校里能有几个这样睿智的老师就好了。
2008-07-09 18:44 | afei929      

#40楼   回复  引用    

本来很迷茫的!谢谢指点,就点相见恨晚的感觉,呵呵!谢谢!
2008-07-16 16:05 | OceanLee[未注册用户]

#41楼   回复  引用    

你好坏阿!!!勾引我买你的书。。。。看来书费我是不掏不行了。
2008-09-12 14:58 | leechzhao3[未注册用户]

#42楼   回复  引用    

顶替迷伍
2009-03-18 09:54 | fuck[未注册用户]

#43楼   回复  引用    

sdf
2009-03-18 09:55 | OceanLee[未注册用户]



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 684550




相关文章:

相关链接: