iOS設計模式 策略

2021-09-23 21:10:54 字數 2717 閱讀 5880

ios設計模式 - 策略

1. 把解決相同問題的演算法抽象成策略(相同問題指的是輸入引數相同,但根據演算法不同輸出引數會有差異)

2. 策略被封裝在物件之中(是物件內容的一部分),策略改變的是物件的內容.如果從外部擴充套件了物件的行為,就不叫策略模式,而是裝飾模式.

3. 策略模式可以簡化複雜的判斷邏輯(if - else)

4. 如果對物件導向基本原理以及設計模式基本原理不熟悉,本教程會變得難以理解.原始碼

//

// inputvalidator.h

// strategypattern

//// created by youxianming on 15/7/26.

//#import #import #define empty_input @"輸入為空"

@inte***ce inputvalidator : nsobject

/** * 抽象策略

* * @param input 當前輸入textfield

* * @return 輸入驗證是否合法

*/- (bool)validateinput:(uitextfield *)input;

/** * 錯誤資訊

*/@property (nonatomic, strong) nsstring *errormessage;

@end

//

// inputvalidator.m

// strategypattern

//// created by youxianming on 15/7/26.

//#import "inputvalidator.h"

@implementation inputvalidator

- (bool)validateinput:(uitextfield *)input

@end

//

// customfield.h

// strategypattern

//// created by youxianming on 15/7/26.

//#import #import "inputvalidator.h"

@inte***ce customfield : uitextfield

/** * 抽象策略

*/@property (nonatomic, strong, readonly) inputvalidator *inputvalidator;

/** * 初始化textfield

* * @param frame

* @param inputvalidator 驗證策略

* * @return 例項物件

*/- (instancetype)initwithframe:(cgrect)frame withinputvalidator:(inputvalidator *)inputvalidator;

/** * 對應於具體策略的返回值

* * @return 是否合格

*/- (bool)validate;

@end

//

// customfield.m

// strategypattern

//// created by youxianming on 15/7/26.

//#import "customfield.h"

@inte***ce customfield ()

/** * 抽象策略

*/@property (nonatomic, strong) inputvalidator *inputvalidator;

@end

@implementation customfield

#pragma mark - 初始化

- (instancetype)initwithframe:(cgrect)frame withinputvalidator:(inputvalidator *)inputvalidator

return self;

}- (void)setup

- (bool)validate

@end

分析

策略模式對比示意圖(抽象類與具體實現的詳細對比)

策略被封裝在物件之中(是物件內容的一部分),策略改變的是物件的內容的

簡化了 if - else 操作(按照以前的寫法,有幾個textfield判斷,就得寫幾個if - else,還有,實現細節暴露出來,維護困難 -_-!!)

iOS設計模式 策略模式

定義一系列演算法,把它們乙個個封裝起來,並且使它們可互相替換。策略模式中的乙個關鍵角色是策略類,它為所有支援的或相關的演算法宣告了乙個共同介面。場景物件使用策略介面呼叫由具體策略類定義的演算法。1 抽象策略角色 通常有乙個介面或乙個抽象類實現 3 環境角色 持有乙個策略類的應用,最終供客戶端呼叫 乙...

iOS開發設計策略模式

ios應用能加密?全球都沒有的技術,你造嗎?作為開發ios應用的,是不是感到自己out啦?快來看看什麼是ios應用加密 在ios開發中,使用官方框架,官方sdk中,可以接觸到不少設計模式,可能平時沒有注意,實際上已經用到了不少設計模式 下面舉乙個例子 比方我有乙個nsmutablearray,裡面每...

iOS 策略模式

oop中三個原則 封裝 繼承 多型,取經位址 策略模式我理解應該是演算法在源 中就已經配對好了,例如針對多個輸入框內容的判斷,有郵箱的判斷 手機號 姓名 年齡等不同種功能,這樣情況一開始就會對每乙個輸入進行分配他的策略,然後在判斷的時候根據他們自己策略演算法執行。場景一 出遊路線 下拉列表 簡單粗暴...