iOS應用開發中常用的設計模式
在本教程中,您將瞭解在製作iOS應用程式時應遵循的一些常見設計模式。
什麼是Swift設計模式?
在Swift中,設計模式使開發人員的開發過程更加輕鬆。遵循設計模式可以建立高效的工作環境。iOS設計模式是一套建立應用程式的可重複方法。
iOS開發中最常用的設計模式有哪些?
建造者模式 (Builder)
外觀模式 (Facade)
MVC模式
單例模式 (Singleton)
VIPER模式
MVVM模式
介面卡模式 (Adaptor)
觀察者模式 (Observer)
工廠方法模式 (Factory Method)
讓我們討論其中一些模式,以瞭解它們的工作原理:
演算法
步驟1 - 為食物類別建立一個列舉。
步驟2 - 建立用於儲存食物專案和訂單專案的簡單模型。
步驟3 - 建立一個模型來儲存訂單詳細資訊並計算訂單價格。
步驟4 - 建立一個建造者模型來建立和維護訂單。
建造者模式 (Builder)
建造者模式也被稱為建立型模式,它允許我們在Swift語言中建立物件。使用它,我們可以透過遵循步驟來建立複雜的物件。使用建造者模式的一個主要好處是,您可以使用相同的程式碼片段來建立多個物件檢視。
示例
import Foundation
enum FoodCategory: Int {
case firstCourses, mainCourses, drinks
}
struct FoodItem {
var name: String
var price: Float
}
struct OrderItem {
var food: FoodItem
var count: Int
}
struct OrderDetail {
var firstCourses: [OrderItem] = []
var mainCourses: [OrderItem] = []
var drinks: [OrderItem] = []
// calculating total price of the order
var price: Float {
let items = firstCourses + mainCourses + drinks
return items.reduce(Float(0), { $0 + $1.food.price * Float($1.count) })
}
}
// Builder Pattern
class OrderBuilder {
private var order: OrderDetail?
func reset() {
order = OrderDetail()
}
func setFirstCourse(_ food: FoodItem) {
set(food, at: order?.firstCourses, withCategory: .firstCourses)
}
func setMainCourse(_ food: FoodItem) {
set(food, at: order?.mainCourses, withCategory: .mainCourses)
}
func setDrink(_ food: FoodItem) {
set(food, at: order?.drinks, withCategory: .drinks)
}
func getResult() -> OrderDetail? {
return order ?? nil
}
private func set(_ food: FoodItem,
at orderCategory: [OrderItem]?,
withCategory foodCategory: FoodCategory) {
guard let orderCategory = orderCategory else {
return
}
var item: OrderItem! = orderCategory.filter( { $0.food.name == food.name } ).first
guard item == nil else {
item.count += 1
return
}
item = OrderItem(food: food, count: 1)
switch foodCategory {
case .firstCourses:
order?.firstCourses.append(item)
case .mainCourses:
order?.mainCourses.append(item)
case .drinks:
order?.drinks.append(item)
}
}
}
// Usage
let butterKulcha = FoodItem(name: "Butter Kulcha", price: 60)
let lassi = FoodItem(name: "Mango Lassi", price: 90)
let builder = OrderBuilder()
builder.reset()
builder.setMainCourse(butterKulcha)
builder.setDrink(lassi)
let order = builder.getResult()
print("Order Price: \(order?.price ?? 0.0)")
輸出
Order Price: 150.0
外觀模式 (Facade)
為了儲存資訊,您通常使用類。在這種情況下,您可以建立自己的類並將其他類物件包裝在其中。使用外觀模式,您可以將系統邏輯分離到不同的層。它可以幫助您輕鬆管理具有多層結構的專案程式碼。
以外觀模式為例,可以幫助您將音訊錄製和播放整合到您的iOS應用程式中。使用外觀模式,您可以隱藏檔案系統。
MVC模式
MVC模式又稱模型-檢視-控制器模式。這是iOS開發中最流行的設計模式之一。Apple也使用這種設計模式製作他們所有的演示應用程式,我們可以在Apple的文件中看到。使用MVC模式,您可以建立單獨的層,例如用於業務邏輯的模型、用於使用者介面的檢視和用於控制使用者流程的控制器。
該機制的三個功能是:
模型用於儲存業務邏輯和資料,以及操作資料。通常,我們使用類或結構體來儲存資訊。
檢視用於設計使用者介面,使用者可以在其上進行互動。基本上,Swift提供了許多不同的檢視元件用於不同的用途。
控制器用於控制模型和檢視之間的資料流。它在這個設計模式中起著重要的作用。
何時應該在iOS應用程式中使用MVC模式?
您應該使用它來維護資料流和訊息傳遞的程式碼。
將程式碼寫入正確的結構中。
加快開發過程。
編寫簡單幹淨的程式碼。
編寫易於其他開發人員理解的程式碼。
單例模式 (Singleton)
當您需要一直處理單個例項時,單例模式將對您有所幫助。使用它,您可以在整個應用程式生命週期中建立一個例項。
實際上,您應該避免使用單例模式,因為它可能會遇到一些問題。但是有時,您需要使用單個物件來與多個元件共享相同的例項。
何時應該在Swift中使用單例模式?
當程式中的類應該只有一個例項供所有客戶端使用時。
當您需要嚴格控制全域性變數時。
MVVM (模型-檢視-檢視模型)
這是iOS開發人員最喜歡的設計模式。MVVM也稱為模型-檢視-檢視模型。這種設計模式包括所有元件,如檢視、模型、控制器、動畫、多執行緒、資料庫等。
此外,檢視和模型之間的檢視模型層以規範的方式表示檢視。因此,檢視模型提供了一組介面,每個介面都表示UI元件。
觀察者模式 (Observer)
在Swift中,使用不同和多個物件,我們可以定義物件之間的一對一和一對多的關係。例如,您想觀察對物件所做的更改,並根據該更改執行操作。在這種情況下,觀察者模式非常有助於觀察更改並執行進一步的操作。
在觀察者設計模式中,主題和觀察者是鬆散耦合的。
介面卡模式 (Adaptor)
為了開發iOS設計模式應用程式,介面卡模式根據客戶端需求將類介面轉換為另一個介面。
使用此介面卡,類可以相互互動,同時將客戶端與物件的類隔離開。
結論
在本文中,我們討論了iOS開發中不同且最常用的設計模式。它們可用於不同的情況和需求。在開發iOS應用程式時,正確遵循設計模式以編寫乾淨安全的程式碼至關重要。
基本上,對於開發小型應用程式,可以使用MVC設計模式。但是對於大型應用程式,建議使用MVVM設計模式。
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP