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設計模式。

更新於:2022年12月21日

瀏覽量:541

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.