Android Kotlin 设计模式之建造者模式

2020-01-14  本文已影响0人  水天滑稽天照八野滑稽石

前言

补下坑,因为之前简书整改和一些其他原因就断更了,这次就来聊聊建造者

工厂模式与建造者模式的差别

因为这2个还是挺相似的,都是生成一个我们想要的东西,所以还是得说清楚的:
工厂模式:直接生成一个可用的产品

// 如bitmapFactory
val bitmap = BitmapFactory.decodeFile(filePath)b

建造者模式:配置相关参数生成一个我们想要的产品

//如AlertDialog
 val builder = AlertDialog.Builder(this)
 val dialog = builder.setTitle(xxxx)
            .setIcon(xxxx)
            .setIcon(XXX)
            .setXXX(xxx)
            .create()
            .show()

正文

对于建造者模式来说,写法上主要表现就是链式反应的写法
这儿我们同样以生成一个实体类为例(一个学生)

class Student{
        private var name = ""
        private var age = 0

        fun setName(name: String): Student {
            this.name = name
            return this
        }

        //链式反应就是return this 就好了
        fun setAge(age: Int): Student {
            this.age = age
            return this
        }
    }

//使用
 val student = Student()
            .setAge(11)
            .setName("XXX")
//当然也可以这样写
class Student private constructor(){

    private lateinit var name: String
    private var age by Delegates.notNull<Int>()
    
    companion object {
        fun builder(): Builder {
            return Builder()
        }
    }

    class Builder{

        private val student = Student()

        fun setName(name: String): Builder {
            student.name = name
            return this
        }

        fun setAge(age: Int): Builder {
            student.age = age
            return this
        }

        fun build(): Student {
            return student
        }
    }

}
// 使用
  val student = Student
                .builder()
                .setAge(10)
                .setName("xiao")
                .build()

总结

反正对于建造者模式来说,核心的写法就是同过链式反应配置不同的参数生成我们想要的东西

上一篇下一篇

猜你喜欢

热点阅读