定義:
一種只需要繼承就可以實作的非常簡單的模式,由兩個部份結構組成,第一部分是抽象父類別,第二部分是具體的實作子類別。
實作:
以收營員為例,收營員結帳 SOP 為 掃描物品 >> 將物品放入袋 >> 結帳。
公司為了穩定所有收營員的服務品質,因此所有收營員必須遵從此框架。
- 使用 Protocol 定義父類別範本框架,創建收營員工作項目。
protocol CashierProtocol {
func scanItems()
func putItemsIntoBag()
func collectMoney()
func serveCustomer()
}
2. 使用 Protocol Extension 建立工作流程 SOP 。
extension CashierProtocol {
func serveCustomer() {
scanItems()
putItemsIntoBag()
collectMoney()
}
}
3. 具體實現子類別遵從父類別框架,子類別不能修改框架,但能修改每個步驟的具體實現。
class CostcoCashier: CashierProtocol {
func scanItems() {
print("scanItems")
}
func putItemsIntoBag() {
print("putItemsIntoBag")
}
func collectMoney() {
print("collectMoney")
}
}
let costcoCashier = CostcoCashier()
costcoCashier.serveCustomer()
//scanItems
//putItemsIntoBag
//collectMoney
class FamilyMartCashier: CashierProtocol {
func scanItems() {
print("scanItems")
}
func putItemsIntoBag() {
print("putItemsIntoBag")
}
func collectMoney() {
print("collectMoney")
}
}
let familyMartCashier = FamilyMartCashier()
familyMartCashier.serveCustomer()
//scanItems
//putItemsIntoBag
//collectMoney