今天是11月4日是2006下半年全国计算机技术与软件专业技术资格(水平)考试简称软考
我是考软件设计师的,考的情况就不说了---这个跟下文无关
在下午题的最后一题给我很大的启发,看下文应该能知道答案了---我觉的出这到题的作者肯定是面向对象设计的高手.---
题目我有点忘了但是我就是凭记忆想想--如果没有猜错的话状态图
题目大概意思:
因为差差原因要设计一个Door有click,complete,timeout行为在之间
在考试有他们的状态的转化图.
但是今天我讲的重点不是行为的多少就用一个来讲吧
那我就简化题目来讲吧
首先 看下图---大家是不是觉的很简单呀
还是以DOOR为例他有两个行为就是click ,complete--重点以click
看到上图大家也许和我一样写的下面的程序;
今天看到考试的题目让我清楚的知道
面向对象原来可以这样的—让if—else 判断消失
这个就是好像一个武侠小说能飞就不想用走来快速的行使
可以达到同样的目的
当然有的人认为我用if—else不是很好写起来简单又好看又易懂写的又快
这个表现为初学者的心里(--当然我也是初学者)但是你又没有看到或者想到
如果if—else很多的时候你看的容易吗//
让我们来分析一下这个例子我们把一每个状态抽象成一个类得到下图:这个就是用的类的多态行性,根据Door的属性State的不断变化对应的状态类的也随之改
变这样他门调用的同样的方法的实现的功能的就不一样的,
这样就可以达到动态调用就可以和if--else一样的功能
实现的代码:
下面的类多差不多就不多写了
最后总结:将if else用在小地方还可以,如简单的数值判断;但是如果按照你的传统习惯思维,在实现业务功能时也使用if else,那么说明你的思维可能需要重塑,你的编程经验越丰富,传统过程思维模式就容易根深蒂固,想靠自己改变很困难;建议接受专业头脑风暴培训。