Ios 工厂设计模式在swift3.0中的实现

Ios 工厂设计模式在swift3.0中的实现,ios,swift3,protocols,Ios,Swift3,Protocols,我想在Swift 3.0中实现工厂设计模式 我想到的基本解决方案是: 定义为对象创建方法的 在对象内实现协议 这是一个合理的方法吗 或者Swift中是否有其他设计模式?您可以尝试使用此实现作为参考。 导入UIKit 导入PlaygroundSupport 枚举映射:Int{ 案例google=1 苹果 } 协议显示{ func showMap() } 类图{ let类型:Int=0 func showMap(类型:Maps)->显示{ 开关类型{ case Maps.apple: 返回Ap

我想在Swift 3.0中实现工厂设计模式

我想到的基本解决方案是:

  • 定义为对象创建方法的
  • 在对象内实现协议
这是一个合理的方法吗


或者Swift中是否有其他设计模式?

您可以尝试使用此实现作为参考。

导入UIKit
导入PlaygroundSupport
枚举映射:Int{
案例google=1
苹果
}
协议显示{
func showMap()
}
类图{
let类型:Int=0
func showMap(类型:Maps)->显示{
开关类型{
case Maps.apple:
返回AppleMap()
case Maps.google:
失败
违约:
返回GoogleMap()
}
}
}
类AppleMap:显示{
func showMap(){
打印(“显示苹果地图”)
}
}
类谷歌地图:显示{
func showMap(){
打印(“显示谷歌地图”)
}
}
类MyViewController:UIViewController{
重写func loadView(){
let view=UIView()
view.backgroundColor=.white
let label=UILabel()
label.frame=CGRect(x:150,y:200,宽度:200,高度:20)
label.text=“你好,世界!”
label.textColor=.black
view.addSubview(标签)
self.view=view
设map=map()
showMap(类型:Maps.google)
map.showMap(类型:Maps.apple)
}
}

Factory设计模式可能是一种合理的方法,也有很多替代模式。你到底想实现什么?我有一个返回JSON格式数据的服务器。我使用“createObjectType”方法创建了一个类,以将类的实现与创建分离。该类还包含其他方法(例如createMyObject2、createMyObject3)。我们的想法是,根据使用的API版本类型,每个函数可以有不同的输入参数(有些API可能以JSON格式返回,有些可能使用不同的格式)。在这种情况下,是的,您的方法很好。您将有一个(或多个)协议定义数据必须如何格式化,以及这些协议的多个实现(例如,每个端点一个)。为了知道在特定时刻必须使用特定上下文/参数的实现,您完全可以使用工厂模式。