讲工厂模式,大家可能觉得会很Low,不就是搞个类,然后专门生成一个具体的对象嘛,这有什么难的。是的,工厂模式确实不难,但是问你一下,如果你的代码中有很多if...else,你知道怎么通过工厂模式,把这些if...else去掉么?“嗯,工厂模式我会,但是和去掉if...else好像没有关系吧?”
我举个例子,假如你遇到如下代码:
- switch($taskInfo['type_id']) {
- //批量冻结订单
- case 1:
- $result = self::batchFrozen($row_key,1);
- break;
- //批量解冻订单
- case 2:
- $result = self::batchFrozen($row_key,0);
- break;
- //批量允许发货
- case 3:
- $result =self::batchReshipment($row_key);
- break;
- //批量取消发货
- case 4:
- $result = self::batchCancel($row_key);
- break;
- // 后面还有几十个case,省略...
既然你懂工厂模式,可以把if...else简单重构一下,那就开始你的表演吧。“什么?不会?!你刚才还是自己是会工厂模式,怎么突然就怂了呢?”,既然不会,那就静下心来,虚心学习一下。