| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
myreed
9年前发布

Swift函数式编程范式下的模板模式实践

来自: http://www.jianshu.com/p/c4f185e4cd72

设计模式无疑是在面向对象思想下的产物。

但是在不同的范式下,模式有可能呈现为截然不同的外在形象。因为函数式世界用来搭建程序的材料不一样了,所以解决问题的手法也不一样了。 ——《Functional Thinking》

这篇讲讲模板模式(Template Method Pattern)在函数式编程里的实现。

首先简单的介绍下模板模式:

在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情冴下,重新定义算法中的某些步骤。

模板模式的使用场景:

1、多个类区别在于主流程中的某个细节

2、客户可以自已实现模版里的抽象方法

3、对客户隐藏具体的实现流程(方法的组合的顺序)

</div>

假设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>

 本文由用户 myreed 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!