設計模式 Swift(策略模式)

閱讀大話設計模式心得,使用 Swift Ver. 3.0 (Jun 6, 2016)

Swift API Doc

商場收銀系統

目標:根據客戶所買的單價和數量來收費

1
2
3
4
5
6
var total = 0.0
func addProduct(price:Double, num:Double) {
let totalPrice:Double = price * num
total = total + totalPrice
}
print("total = \(total)")

如果現在賣場產品都打 8 折要如何做

直接將 price * 0.8 會有問題

如果之後價格改回來或改成其他折扣,需要再改程式碼

如果又有滿 300 送 100 的促銷?

簡單工廠實現

OOP 並非類別越多越好,類別劃分是為了封裝

分類基礎是抽象,具有相同屬性和功能的抽象集合才是類別

所以要把打折作為一個類別