单列:保证整个程序中始终只有某一个对象,只能被创建一次
单列的使用方法:
1:私有化结构
private constructor()
2:提供一个伴生对象
companion object{}
3:在伴生对象中提供一个私有化属性,外部是访问不了的
private var instance:Repository? = null
4:提供一个接口(方法)给外部访问instance
fun getInstance():Repository{
if (instance == null){
synchronized(this){
instance = Repository()
}
}
return instance !!
}
5:提供外部获取修改数据的接口(方法),和平时写方法的方式一样了,根据自己的情况多变
6:synchronized:被synchronized修饰的部分只能被一个调用,假设当a在调用sychronized中的代码时,b要想调用就只能等a调用完,
该网站对synchronized的讲解: https://blog.csdn.net/zjy15203167987/article/details/82531772
例子:
class Repository private constructor(){
//提供一个伴生对象
companion object{
private var instance:Repository? = null
fun getInstance():Repository{
if (instance == null){
synchronized(this){
instance = Repository()
}
}
return instance !!
}
}
}