前言
补下坑,因为之前简书整改和一些其他原因就断更了,这次就来聊聊建造者
工厂模式与建造者模式的差别
因为这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()
总结
反正对于建造者模式来说,核心的写法就是同过链式反应配置不同的参数生成我们想要的东西
网友评论