代理模式
代理模式作为一种比较常用的设计模式,顾名思义,你需要一个牛逼的代理,打个比方,你要是想要接触一些大牌明星,明面上基本上见不着的,这时候你就需要一个访问层,比如她的经理人之类的,间接地传达一些消息,否者会对明星的生活带来很多困扰,基于这种思想,代理模式也就很好理解了,就是为了让你间接地控制一些敏感的对象,八道不胡说,先上代码
IUser.java
public interface IUser {
public void whoAreYou();
}
User.java
public class User implements IUser {
private String name;
public User(String name){
this.name = name;
init();
}
public void init(){
System.out.println("init:"+name);
}
@Override
public void whoAreYou() {
System.out.println("begin:"+name);
}
}
Proxy.java
public class Proxy implements IUser {
private String name;
private User user;
public Proxy(String name){
this.name = name;
}
@Override
public void whoAreYou() {
if (user == null){
user = new User(name);
}
user.whoAreYou();
}
}
TestProxy.java
public class TestProxy {
public static void main(String[] args) {
IUser proxy = new Proxy("zs");
proxy.whoAreYou();
System.out.println("---贫富分割线---");
proxy.whoAreYou();
}
}
Run result
init:zs
begin:zs
---贫富分割线---
begin:zs
作为一种优秀的结构型模式,从上述代码可看出利用Proxy类可以访问User中的方法,这种方式较为安全,在对象处理上,采用了Lazy loading的思想,避免浪费资源