原型模式
2016-08-02 本文已影响9人
旺仔Milk
初步实现
// 简历类
class Resume: NSObject {
private var name:String?
private var sex:String?
private var age:String?
private var timeArea:String?
private var company:String?
init(name:String) {
self.name = name
}
func setPersonalInfo(sex:String, age:String){
self.age = age
self.sex = sex
}
func setWorkExperience(timeArea:String, company:String){
self.timeArea = timeArea
self.company = company
}
func display(){
print(name!, sex!, age!)
print("工作经历:",timeArea!,company!)
}
}
客户端代码
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let a = Resume(name: "大鸟")
a.setPersonalInfo("男", age: "29")
a.setWorkExperience("1998-2000", company: "xx公司")
let b = Resume(name: "大鸟")
b.setPersonalInfo("男", age: "29")
b.setWorkExperience("1998-2000", company: "xx公司")
let c = Resume(name: "大鸟")
c.setPersonalInfo("男", age: "29")
c.setWorkExperience("1998-2000", company: "xx公司")
a.display()
b.display()
c.display()
/*
大鸟 男 29
工作经历: 1998-2000 xx公司
大鸟 男 29
工作经历: 1998-2000 xx公司
大鸟 男 29
工作经历: 1998-2000 xx公司
*/
}
}
这样写的话,如果需要20份简历就需要实例化20个对象,在如果某一个值需要修改, 就需要修改20次.
如果用引用呢?
// 客户端代码
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let a = Resume(name: "大鸟")
a.setPersonalInfo("男", age: "29")
a.setWorkExperience("1998-2000", company: "xx公司")
let b = a
let c = a
a.display()
b.display()
c.display()
/*
大鸟 男 29
工作经历: 1998-2000 xx公司
大鸟 男 29
工作经历: 1998-2000 xx公司
大鸟 男 29
工作经历: 1998-2000 xx公司
*/
}
}
原型模式
原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建的新对