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