美文网首页
原型模式在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中的体现

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

  • 装饰模式在swift中的体现

    概念 给装饰对象指定一个原始对象,这样装饰对象既有自己原有的功能,又有了原始对象的功能。简单来说也可以这么理解,让...

  • 策略模式在swift中的体现

    概念 策略模式属于行为模式,定义了一系列可以替换的对象,可在run time时设置或切换。可通过不同的策略实现不同...

  • 简单工厂模式在swift中的体现

    简单说就是通过一个对象创建出另一个对象。 实现方式 某个类有一个实例方法,该实例方法需要传一个对象类型的参数,返回...

  • 模版方法模式在swift中的体现

    概念 当我们要完成在某个细节层次一致的一个过程或者一系列步骤,但是其个别步骤的更详细的层次上实现可能不同时,我们通...

  • 抽象工厂模式在swift中的体现

    一个具体的工厂类遵守某个协议,并实现协议中的创建对象(产品)的方法,返回一个遵守了协议的具体的对象,当我们拿到这个...

  • 迭代器模式在swift中的体现

    概念 迭代器模式属于行为型模式,提供了循环集合的标准方法 例子 我们自己使用数组创建一个队列类,要想让这个队列类有...

  • 适配器模式在swift中的体现

    swift中的面向协议编程在不改变原类的接口的前提下通过让该类遵守协议,具有了某些功能。dem地址https://...

  • 备忘录模式在swift中的体现

    能将某个对象持久化存储起来,同时也能从磁盘中将该对象取出来。存储:将对象通过encode转成Data数据进行存储取...

  • 生成器模式在swift中的体现

    当创建一个对象需要逐步设置所有属性来创建,而不是直接通过一个初始化方法设置所有属性的时候就需要用到生成器模式。在创...

网友评论

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

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