使用场景 实现方式
使用 builder 创建者模式的场景一般为构造一个参数含有大量数据的场景 将 builder 模式内置到目标类中,目标类使用 private 修饰构造方法,对外暴露对应的 builder 通过链式调用 builder 的各种方法后,调用 build 生成对应的目标类
项目中实践 使用 spm 打点的时候借助 kotlin 语言的 DSL 特性实现了 builder 模式,在广告 sdk 中也使用该模式创建参数
类似结构 还有一个类似结构就是类的立案时调用,不使用 builder 直接在对应的方法返回 this 也可以达到链式调用的目的

package com.duwo.business.report

import com.xckj.log.model.SpmInfo

class SPMInfoBuilder private constructor() {
    companion object {
        inline fun build(block: SBuilder.() -> Unit): SpmInfo = SBuilder().apply(block).build()
    }

    class SBuilder {
        private var spmB = ""
        private var spmC = ""
        private var spmD = ""

        fun setSPMPageID(pageId: String): SBuilder {
            spmB = pageId
            return this
        }

        fun setSPMBlockID(blockId: String): SBuilder {
            spmC = blockId
            return this
        }

        fun setSPMElementID(elementId: String): SBuilder {
            spmD = elementId
            return this
        }

        fun build(): SpmInfo {
            val spmInfo = SpmInfo()
            spmInfo.b = this.spmB
            spmInfo.c = this.spmC
            spmInfo.d = this.spmD
            return spmInfo
        }
    }
}

总结

builder 模式最多的就是创建一个含有大量参数的对象,使用 builder 模式可以方便快捷的创建出目标对象,同时也可以屏蔽创建细节。