Swift函數式編程范式下的模板模式實踐

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