iOS 設計模式淺析 1 - 策略

MixReality發表於2017-12-16

本篇文章主要講三個點:

      1. 什麼是策略模式.

      2. 策略模式的優缺點.

      3. demo .

1. 策略模式

      定義一系列演算法, 並且將每個演算法封裝起來, 演算法之間可以互相替換. 使用前提: 輸入已知, 好比你渴了, 可以喝可樂, 可以喝牛奶, 也可以喝水.

      在我們專案中比較常見的使用情況:

      1. 切換主題, 要展示圖片, 只是展示的圖片不同而已.

      2. 更換顯示狀態, 總用淘寶的人知道, 展示介面可以是一排一個 cell, 也可以是一排兩個 cell.

      放一張圖簡單明瞭:

iOS 設計模式淺析 1 - 策略

2. 策略模式的優缺點

      優點: 邏輯清晰, 程式碼維護性強

      缺點: 程式碼量會增大一些, 應用場景侷限

3. demo

      策略最重要的一點是策略類, 它是一個抽象類, 下面有幾個具體的實現類, 來實現抽象類中的抽放方法. Context 為場景類, 場景類聚合策略類就是策略模式啦, 下面用一個 demo 來再說明一下:

iOS 設計模式淺析 1 - 策略

      兩個輸入框, 兩個按鈕, 分別驗證輸入的是否是純數字和純英文, 這裡有一個策略類 InputTest, 具體實現類: InputNumTest 和 InputEnglishTest, 場景類: 子類化的輸入框類 MRTextField

iOS 設計模式淺析 1 - 策略
iOS 設計模式淺析 1 - 策略

       抽象類 InputTest 裡面有個兩個方法和一個屬性, testInputWithTextField: 用於驗證輸入, testRegexWithRegix:andText: 用於檢測正則, desc 為檢測錯誤時的欄位描述.

iOS 設計模式淺析 1 - 策略

       InputEnglishTest 裡面寫的和 InputNumTest 一樣, 只是正則不同, 就直放上 InputNumTest 的截圖啦, InputNumTest 繼承自 InputTest 類, 實現其抽象方法, 根據傳入的 tf 驗證輸入是否正確.

iOS 設計模式淺析 1 - 策略
iOS 設計模式淺析 1 - 策略

      子類化的輸入框類, 聚合了策略類 InputTest, checkInput 用於檢測輸入是否正確, desc 為檢測錯誤時的描述, .m 檔案實現了 checkInput 方法, 用 self.iputTest 檢測輸入是否正確.

iOS 設計模式淺析 1 - 策略
iOS 設計模式淺析 1 - 策略

      ViewController.m 裡實現了具體程式碼, 初始化策略類, 當檢測的時候呼叫 [tf checkInput] 即可檢測輸入了.

     這裡是 demo的傳送門, 如果喜歡的話, 大家可以為這篇文章點個 ❤️, 加個關注呦!


相關文章