在开发过程中,很多人钟情于if/else
连环写法,举个简单的例子,一个页面有N个菜单,点击的时候通过枚举类型来进行业务逻辑跳转。那么通常会这么写:
1 | - (void)handleJumpType:(ClJumpType)jumpType{ |
假如说有十几个枚举,那handleJumpType:
方法就会看起来不是很优雅,如果条件有变化的话,不好扩展,而且业务代码牵一发动全身……
那么骚一点的程序员会怎么写呢?switch/case
? 当然不是,我这里推荐使用工厂模式来优雅的处理类似的逻辑。
接下来我们就通过一系列的代码来演示如何通过工厂模式来处理这个问题。
废话不说了上代码:
1 | // 类型枚举 |
到这里,我们的工厂定义完了,那么接下来改造一下上面的handleJumpType:
方法:
1 | - (void)handleJumpType:(ClJumpType)jumpType{ |
OK,改造完的样子,是不是很优雅?而且如果需要扩展的话,handleJumpType:
方法完全不用修改。
通过这个例子是不是觉得利用工厂模式来处理类似的问题十分的合适呢,其实设计模式在实际的开发中还是很有用的,只要我们仔细的去揣摩代码,你会发现它总有一些模式在里面。