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

启动您的职业生涯

完成课程获得认证

开始学习
广告