>if else是代码层次的,而filter考虑的角度更多的是业务需求层次的,
这个总结非常好,实际上这也是我们很多有经验的程序员会在脑子里使用if else来替代有效的业务分析。
filter是从一个模式语言来说,其实我想表达的是动态的这个概念,是动态语言的动态。刚才在会SOA帖子时,我认为recher提到的SOA优点:
我个人觉得SOA根本体现分离关注点包含三个方面:一个是代码技术角度,一个是设计架构角度,一个应用业务功能角度。
代码技术:反应的从对象/接口的关系静态(体现代码)-->描述的动态的转变;
设计架构体系:从根本上可以把架构的技术关系从静态耦合关系-->代码没有耦合,耦合关系发生在runtime动态关系转变(这必然促使架构中组件关系的);
应用角度:这是他思路最强和更高层次看问题,从业务和技术功能的从静态耦合到静态分离(runtime耦合)转变----这是多么强大的功能能也是IT行业追求的效果.
追求运行时动态耦合可以说时动态设计的最大目标,其中过滤器filter是这种实现的一个途径,每个构件功能都可能成为一个过滤器Filter,就象我们在做光学物理实验,在光线通向方向可以随机插入各种颜色滤镜一样,和我上帖的图非常类似。
这就是开发设计中动态设计境界,目前我已经在JiveJdon3中实现了。
但是,如果你使用if else考虑或实现系统时,实际你不是以动态和立体思维来分析和设计系统,而是一种静态强耦合。
>至于“将if else用在小地方”,
这个小地方就是指非业务实现,如流程或简单数据替代,目前这方面也正在被各种新技术钎灭。
另外从目前UML分析角度看,我们会发现UML没有通常的流程图,因为流程图中充满各种if 判断然后时不同的分支,这种方式被状态图 活动图组合在一起替代。
总之,将if else丢在2005年才是你跟上软件技术前进的标志。
当然,具体实现时,不可偏激,需要逐步来实现,就象刚学会走路,就要慢慢学会跑一样。