一、代理模式
说什么是代理模式呢,也可以在我们现实生活中去举例子,可以说一个人借出去,去 叫另一个人替这个人把借出去的钱要回来 这也就是一种代理模式。也可以说成委托模式。
看一下是怎么实现的:
interface Subject {
void request();
}
class RealSubject implements Subject{
@Override
public void request() {
System.out.println("RealSubject");
}
}
class Proxy implements Subject{
private RealSubject realSubject;
public Proxy(RealSubject realSubject) {
this.realSubject = realSubject;
}
@Override
public void request() {
System.out.println("Proxy start");
realSubject.request();
System.out.println("Proxy end");
}
}
public static void main(String[] args){
RealSubject realSubject = new RealSubject();
Proxy proxy=new Proxy(realSubject);
proxy.request();
}
二、延迟初始化
在Kotlin中属性声明中也要做初始化的操作,否则也是会报错
就像如下代码:
private var name0: String //报错
private var name1: String = "xiaoming" //不报错
private var name2: String? = null //不报错
在Kotlin中有两种延迟初始化的方式。一种是lateinit var,一种是by lazy。
by lazy 的写法
//用于属性延迟初始化
val name: Int by lazy {
1
}
//用于局部变量延迟初始化
public fun foo() {
val bar by lazy { "hello"
}
println(bar)
}
by lazy的实现如下:
class TestCase {
private val name: Int by lazy {
1
}
fun printname() {
println(name)
}
}
lateinit var 的写法
private lateinit var name: String
查了一下百度 要是说这两种方法那个比较好用呢