美文网首页
原型模式

原型模式

作者: 旺仔Milk | 来源:发表于2016-08-02 11:35 被阅读9次

    初步实现

    // 简历类
    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公司
             */
        }
    }
    

    原型模式

    原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建的新对

    相关文章

      网友评论

          本文标题:原型模式

          本文链接:https://www.haomeiwen.com/subject/qchwlttx.html