在該系列的第一篇文章中,我討論了建立設計模式。
現在,我將描述另一組稱為行為設計模式的模式。
行為設計模式處理物件之間的互動方式。它描述了物件之間如何進行通訊,以及如何在不同物件之間中斷任務的步驟,從而提供了更大的靈活性並使**更易於測試。
讓我們跳到以下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協議分析...