代理设计模式

一.什么是代理设计模式

为其他对象提供一种代理以控制对这个对象的访问。

二.代理设计模式的作用

在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

三、代理模式的应用

1、远程代理:为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。
2、虚拟代理:根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。
3、安全代理:用来控制真实对象访问时的权限。
4、智能指引:是指当调用真实的对象时,代理处理另外一些事

三.如何实现代理设计模式

     首先设计一下应用场景:有一个美女想找一个男盆友,但又不好意思直接去找,于是就把自己的个人信息委托给一家相亲平台,让相亲平台去帮助自己找。正好又有一个帅气的男生通过相亲平台发现这个美女很符合自己要求,于是就通过这个平台去了解这个美女的个人信息。

1.静态代理模式
//先定义一个美女接口
public interface WoMan {       
    //这个美女有哪些个人信息?  
    public void xiongda();//胸大       
    public void tuichang();//腿长 
  


//定义一个真实的美女
public class MeiMei implements WoMan{   
    @Override  
    public void xiongda() {  
        System.out.println("我的胸很大");            
    }   
    @Override  
    public void tuichang() {  
        System.out.println("我的腿很长");            
    }    


//定义一个相亲平台代理
public class DaiLi implements WoMan {      
    private WoMan woman;        
    public DaiLi(){  
        //默认的话是美女的代理  
        this.woman = new MeiMei();  
    }  
    //她可以是WoMan的任何一个女人的代理,只要你是这一类型  
    public DaiLi(WoMan woman){  
        this.woman = woman;  
    }  
  
    @Override  
    public void xiongda() {  
        //美女的胸部信息。  
        this.woman.xiongda();           
    }  
  
    @Override  
    public void tuichang() {  
        //美女的腿长信息  
        this.woman.tuichang();            
    }  
}   

//定义一个男生通过相亲平台去了解一个美女
public class man {  
    public static void main(String[] args) {
//第一种用定义好的一个美女对象  
        DaiLi daili = new DaiLi();            
        daili.xiongda();  
        daili.tuichang();  
        //第二种跟具符合要求的去找很多美女个体
//WoMan woman = new 另外的美女();
        //把另外符合要求的美女也给平台代理 
        //DaiLi daili = new DaiLi(woman);  
        //daili.xiongda();  
        //daili.tuichang();
    }  
}

2.动态代理模式 
何为动态代理:就是通过反射机制获得对象,代理对象。  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NPC程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值