Swift中的設計模式 第二部分 行為設計模式

2021-09-29 16:35:50 字數 1856 閱讀 5794

在該系列的第一篇文章中,我討論了建立設計模式。

現在,我將描述另一組稱為行為設計模式的模式。

行為設計模式處理物件之間的互動方式。它描述了物件之間如何進行通訊,以及如何在不同物件之間中斷任務的步驟,從而提供了更大的靈活性並使**更易於測試。

讓我們跳到以下10個行為設計模式:

1.責任鏈

責任鏈是一種行為設計模式,可讓我們在一系列處理程式之間傳遞請求,其中每個處理程式都決定處理請求或將請求沿著處理鏈傳遞。

有乙個名為「level」的列舉將體育管理細分為三個級別:州,國家和國際。首先,讓我們建立乙個名為「sports」的類,它將僅保留當前的體育管理級別。

enum level: int 

class sports

}protocol gamemanagement

func manage(sports: sports)

}class statesportsteam: gamemanagement else

}}class nationalsportsteam: gamemanagement else

}}class internationalsportsteam: gamemanagement else

}}

然後,我們有了稱為gamemanagement的協議,該協議可以沿處理程式鏈傳遞責任。 statesportsteam,nationalsportsteam和internationalsportsteam類實現此協議。 如果sports級別不屬於他們的管理層,他們會將責任轉移給更高的管理層(或管理人員鏈)。

執行**:

let statesportsteam = statesportsteam()

let nationalsportsteam = nationalsportsteam()

let internationalsportsteam = internationalsportsteam()

statesportsteam.nextlevelmanagement = nationalsportsteam

nationalsportsteam.nextlevelmanagement = internationalsportsteam

let sports1 = sports(level: level.international)

statesportsteam.manage(sports: sports1)

let sports2 = sports(level: level.national)

statesportsteam.manage(sports: sports2)

let sports3 = sports(level: level.state)statesportsteam.manage(sports: sports3)

output:

managed by international sports management

managed by national sports management

managed by state sports management

2.命令模式

在命令模式中,將執行命令的類(稱為invoker)與產生命令的類(concretecommand)和知道如何執行該命令的類(receiver)分離。

讓我們遵循以下示例。

invoker是模式的核心。它可以呼叫execute()方法執行操作,而無需了解具體的類concretecommand及其作用。它只知道抽象型別的command協議。

concretecommand類符合command協議,並在初始化程式中接受receiver物件的例項。然後,它呼叫接收方物件以執行某些任務/操作。

Web API 第二部分

web api 第二部分 元素偏移量 offset element.offsettop element.offsetleft element.offsetwidth 可以得到元素的大小 寬度和高度 是包含padding border width element.offsetheight elemen...

redux 第二部分

redux 的使用方法,為什麼使用 action.js 檔案,進行優化 將其分開,然後我們通過工廠函式的每次返回不同的物件,由於引數是固定的,每次返回的都是事件型別和事件資料,所以我們可以使用乙個函式,通過其返回值來返回乙個物件,讓後傳遞給 action 我們的 reducer 函式有兩個引數,引數...

實驗二 第二部分

第二部分 ftp協議分析 1.兩個同學一組,a和b。2.在a主機上架設ftp伺服器 3.在b主機上執行wireshark,並登陸a主機的ftp伺服器,上傳一張,得到抓取的資料報,4.進行追蹤tcp流,顯示為原始資料,分析得到a主機登陸ftp的過程及使用者名稱密碼,還原上傳的,第二部分 ftp協議分析...