import Foundation
//基本单位
class CommonBean:NSObject{
required override init() {
super.init()
}
}
class Service:CommonBean{
func getUID(){
print("uid")
}
}
class UserService:Service{
func getUser(){
print("getuser")
}
}
//工厂类
class Factory{
static var beans:[String:CommonBean]=[:]//此处用于储存已创建的对象
static func getBean<T:CommonBean>(t:T?)->T{
if let bean = beans["\(T.classForCoder())"]{//如果对象不存在,则新增,并存到对象字典里
return bean as! T
}else{
let tt=T()
beans["\(T.classForCoder())"]=tt
return tt
}
}
static func printBeans(){
print(beans)
}
}
var us:UserService?=nil
us=Factory.getBean(us)
var us2:UserService?=nil
us2=Factory.getBean(us2)
us?.getUser()
us2?.getUser()
//测试结果,us和us2为同一个对象
Factory.printBeans()