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设计模式。