从生活中学习------浅谈打电话的奥妙
口号:拜生活为师,好好学习,天天向上
最近这几天正在研究面向对象的设计模式,虽说有了点点收获,但是总是感觉还是有个膜看不透,想想还是放松一下吧,于是乎,就准备约几个人出去打回篮球,放松放松么…。我想有个好友大概在家,就给他打个电话,可惜有事打不了球了,只好在家歇息着吧,突然间灵光一闪,感觉吧,这个打电话的过程跟我们面向对象很类似,很能说明面向对象的一个思想,这不就想和别人分享一下我的感悟,就浅谈一下这其中的奥妙。
我们先把目光放到贝尔发明电话之前,那时交流无外乎两种写信,亲自上门,但是都会发现其中有问题,假如有位母亲,她的孩子在远方上学,你就想知道孩子过得怎么样,于是,就先写信,可是等了好长时间没有音讯,当然就着急了,就动身前往去看看孩子,可是到了上学地方,你还要向张三啊,李四啊打听,才能找到孩子,一问才知道,孩子换住所了。唉···是不是感觉特无奈呢?很同情那个时候的人,但是我们仔细想想,我们以前的面向过程设计,或者是现在的“伪”面向对象设计,是不是和这种情况很相似呢?就是你要调用一段代码,先试试,不行的话就要去在茫茫方法中寻找。让我说,这种编程就像是诸葛亮做法,事必躬亲。当然它也有优点,那就是系统运行很好,但是只是对亲自编程的人而言的,如果突然出现了意外状况,而那个人又不在呢,程序又必须要修改呢,那么只好向上帝祷告了,无论多么简单,对修改程序的人来说复杂还是复杂,结果就是像诸葛亮一样累死(何况我还比不上诸葛亮)。OK!说了这么多大概了解了没有电话难处了,再把目光转回来,看看现在情况发生怎么样变化。在若干年后,又有位母亲,同样她的孩子也在远方上学,但是现在不同了,她直接给孩子打电话,即使打不通最少有个回音,知道是什么情况。这就是面向对象的一个思想,或者说是一个目标,现在是否有点感悟呢?我们先从接口来讲,对于刚接触面向对象人来看接口,最直观的感觉是继承接口,就是减少代码,所以就图省事,就不断的继承,最后就是---子类复子类,子类何其多。这就是错误的理解,错误应用,让我说还是跟以前过程编程一样,无非把接口看做全局变量了。看接口应该从两面去看,还是回到生活中,从我们打电话人的角度来看,首先我们知道很重要一点,就是只要通过这个号码,就能得到我们想要的信息(要不没人在,要不找的人不在,要不就找到这个人),总结一下就是 通过实现这个接口,可以满足实现人的要求。然后我们再从接电话人
角度来看,只要我们安装了这个电话(继承接口),知道这个信息跟我们有关,做出相应处理就行,总结一下就是 继承接口,并处理有关信息。就好比两个黑盒子一样,都不知道另一边是什么情况--封装。接口就谈到这里,下面再说说别的。
学过设计模式人肯定会知道单件模式。而普通的固定电话也会用,假如接电话人作为单件模式的类,而打电话人作为客户来看,对于接电话的人来说,仅能有一条线路,其他人只能是 等待··· 等待(漫长等待)直到线路挂断。
还有一个就是门面模式了。用电话很好理解,最简单的就是114,假如你要查酒店,ok!你不用到处找,也不用乱打电话,只要打114,然后转接到相应的处理台,提供给你相应服务。门面模式也是如此,用一个类,去分派任务给相应的类,又加深了封装了。
可能还有模式像责任链,这里就不说了,大家可以在继续想,帮我接上,呵呵!欢迎大家指正,还有补充地方请告诉我啊!!!!