代理模式

做~自己de王妃 提交于 2019-12-26 17:09:41

代理模式

代理模式作为一种比较常用的设计模式,顾名思义,你需要一个牛逼的代理,打个比方,你要是想要接触一些大牌明星,明面上基本上见不着的,这时候你就需要一个访问层,比如她的经理人之类的,间接地传达一些消息,否者会对明星的生活带来很多困扰,基于这种思想,代理模式也就很好理解了,就是为了让你间接地控制一些敏感的对象,八道不胡说,先上代码

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的思想,避免浪费资源

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!