美文网首页
原型模式在swift中的体现

原型模式在swift中的体现

作者: 梁森的简书 | 来源:发表于2021-11-28 13:26 被阅读0次

    通过对一个对象进行copy创建出一个新的对象。
    在swift中我们可以创建一个copying协议,某个类遵守该协议后,便可以使用copying协议中的copy方法,copy出一个新的对象。
    copying协议:

    public protocol Copying: AnyObject {
        // 声明 required initializer
        init(_ prototype: Self)
    }
    
    extension Copying {
        // 通常不直接调用初始化器,而是调用 copy() 方法
        public func copy() -> Self {
            return type(of: self).init(self)
        }
    }
    
    

    遵守copying协议的类

    // Monster 类遵守 Copying 协议
    public class Monster: Copying {
        public var health: Int
        public var level: Int
        
        public init(health: Int, level: Int) {
            self.health = health
            self.level = level
        }
        
        public required convenience init(_ monster: Monster) {
            self.init(health: monster.health, level: monster.level)
        }
    }
    

    我们需要将实现的协议方法init(_ prototype: Self)声明成required。
    demo地址:
    https://github.com/pro648/BasicDemos-iOS/tree/master/PrototypePattern

    相关文章

      网友评论

          本文标题:原型模式在swift中的体现

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