Swift函数式编程范式下的模板模式实践
yg6612
9年前
来自: http://www.jianshu.com/p/c4f185e4cd72
设计模式无疑是在面向对象思想下的产物。
但是在不同的范式下,模式有可能呈现为截然不同的外在形象。因为函数式世界用来搭建程序的材料不一样了,所以解决问题的手法也不一样了。 ——《Functional Thinking》
这篇讲讲模板模式(Template Method Pattern)在函数式编程里的实现。
首先简单的介绍下模板模式:
在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情冴下,重新定义算法中的某些步骤。
模板模式的使用场景:
1、多个类区别在于主流程中的某个细节
2、客户可以自已实现模版里的抽象方法
3、对客户隐藏具体的实现流程(方法的组合的顺序)
假设Customer对象有个处理订单的方法。那么传统的模板模式实现大概是这样:
class Customer { / 检查余额 */ func checkCredit(){ assertionFailure("should be override") } / 检查库存 / func checkInventory(){ assertionFailure("should be override") } /* 送货 / func ship(){ assertionFailure("should be override") } /* 处理订单 */ func process(){ checkCredit() checkInventory() ship() } }</div>