美文网首页
生成器模式在swift中的体现

生成器模式在swift中的体现

作者: 梁森的简书 | 来源:发表于2021-11-29 17:05 被阅读0次

当创建一个对象需要逐步设置所有属性来创建,而不是直接通过一个初始化方法设置所有属性的时候就需要用到生成器模式。
在创建该对象的时候我们不直接使用该类进行创建,而是通过一个Director的一个简单方法直接创建。在Director这个类中,我们也不直接使用该类,而是使用一个Builder进行创建,builder能够逐步设置要创建的对象的所有属性。

Director

// Director

public class Employee {
    public func createCombol() throws -> Hamburger {
        let builder = HamburgerBuilder()
        try builder.setMeat(.beef)
        builder.addSauces(.secret)
        builder.addToppings([.lettuce, .tomatoes, .pickles])
        return builder.build()
    }
    
    public func createKittenSpecial() throws -> Hamburger {
        let builder = HamburgerBuilder()
        try builder.setMeat(.kitten)
        builder.addSauces(.mustard)
        builder.addToppings([.lettuce, .tomatoes])
        return builder.build()
    }
}

其中的HamburgerBuilder是builder

builder创建目标对象的方法

public func build() -> Hamburger {
       return Hamburger(meat: meat, sauce: sauces, toppings: toppings)
   }

其中的Hamburger是最终创建目标对象的类
demo地址:
https://github.com/pro648/BasicDemos-iOS/tree/master/BuilderPattern
(注:个人感觉很少用到生成器模式,增加了复杂度,一般都是直接一个初始化方法进行创建,可能是本人还没遇到要用该模式的场景)

相关文章

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

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

  • 装饰模式在swift中的体现

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

  • 策略模式在swift中的体现

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

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

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

  • 原型模式在swift中的体现

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

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

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

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

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

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

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

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

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

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

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

网友评论

      本文标题:生成器模式在swift中的体现

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