0%

Swift中快速简单的工厂设计模式

      这次,我们来讨论简单的工厂设计模式,该模式使用Swift以一种非常简单的方式封装对象创建。

使用 switch-case 实现简单的工厂模式

        这种模式的目标是封装一些经常变化的东西。 想象一下应用程序的调色板。 你可能必须每天根据设计师的最新习惯来更改颜色。 如果你不得不手动搜索和替换每个单独的颜色代码实例,那将给你带来极大的不便。 因此,让我们在Swift中创建一个简单的工厂,该工厂可以根据给定的样式返回颜色。 🎩

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class ColorFactory {

enum Style {
case text
case background
}

func create(_ style: Style) -> UIColor {
switch style {
case .text:
return .black
case .background:
return .white
}
}
}

let factory = ColorFactory()
let textColor = factory.create(.text)
let backgroundColor = factory.create(.background)

        这真的很有用,尤其是涉及复杂的对象初始化过程时。 您还可以定义一个协议,并使用 switch-case 块返回实现所需接口的各种实例类型。 🚦

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
protocol Environment {
var identifier: String { get }
}

class DevEnvironment: Environment {
var identifier: String { return "dev" }
}

class LiveEnvironment: Environment {
var identifier: String { return "live" }
}

class EnvironmentFactory {

enum EnvType {
case dev
case live
}

func create(_ type: EnvType) -> Environment {
switch type {
case .dev:
return DevEnvironment()
case .live:
return LiveEnvironment()
}
}
}

let factory = EnvironmentFactory()
let dev = factory.create(.dev)
print(dev.identifier)

因此,有关简单工厂设计模式的几件事要记住:

  • 通过分离初始化和使用逻辑,有助于松耦合
  • 它只是包装可以经常更改的东西的包装器
  • 可以使用枚举和开关盒在Swift中实现简单的工厂
  • 如果您计划返回不同的对象(POP🎉),请使用协议
  • 保持简单🏭

        这种模式将创建与实际用法分开,并将职责移至特定角色,因此,如果发生某些变化,你只需要修改工厂即可。 你可以保留所有测试,而其他所有功能则完全不受影响。 强大而简单! 💪

坚持原创技术分享,您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道