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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!