我正在尝试找出在Swift中处理对象的最佳模式。
我认为使用初始化程序,包括方便和默认的初始化程序,是正确的...但是类工厂方法该怎么办呢?
我尝试创建一个简单的Person类和一个子类Student,其中包含一些属性和方法。这是最正确的方法吗?
class Person{
var _name: String
var _surname: String
var _dateOfBirthday: String
var _phoneNumb: [String]
init(name:String, surname:String, dateOfBirthday:String, phone:[String]){
self._name = name
self._surname = surname
self._dateOfBirthday = dateOfBirthday
self._phoneNumb = phone
}
convenience init() {
self.init(name:"",surname:"",dateOfBirthday:"", phone:[])
}
convenience init(name:String){
self.init(name:name,surname:"",dateOfBirthday:"", phone:[])
}
}
class Student:Person{
var _studentId:Int
init(name: String, surname: String, dateOfBirthday: String, phone: [String], id:Int) {
self._studentId = id
super.init(name: "", surname: "", dateOfBirthday: "", phone: [])
}
convenience init(){
self.init(name: "", surname: "", dateOfBirthday: "", phone: [], id:0)
}
convenience init(name:String){
self.init(name:name,surname:"",dateOfBirthday:"", phone:[], id:0)
}
}
如果我想添加一个类工厂方法,应该怎么做?是像这样吗,还是我做错了?
class func Person() -> Person {
var x = Person()
x._telephoneNumber = [String]() // is this needed? or i can initialize it later?
return x
}
class func PersonWithName(name:String) -> Person {
var x = Person(name:name, surname:"", dateOfBirthday:"", telephoneNumber:[])
return x
}
这个正确吗?为什么使用init比使用类工厂更好呢?
Person()
并不能告诉你对象的配置情况。假设我想要一个初始化器为 person 设置随机年龄,因此不需要参数。就像 Objective-C 中的PersonWithRandomAge
。在 Swift 中该怎么做呢? - mattsson