#大话设计模式之代理模式#

  下简述一下代理模式是什么,一天小明送小红一个礼物,但这个礼物其实是小雷送的,小明只是代理人,小红永远都不会知道小雷,小明(代理)承包了一切动作~~~这就是代理模式。

  同样现在有一个需求:模仿小红、小雷、小明三者的关系。首先小明和小雷都需要有送礼物的个方法,所以我们可以把送的方法用接口类写

送礼物接口类

package ProxyPattern;

public interface IGiveGift {
    void giveDolls();
    void giveFlowers();
    void giveChocolate();
}

小雷类

package ProxyPattern;

public class Pursuit implements IGiveGift{
    SchoolGirl sg;
    public Pursuit(SchoolGirl sg) {
        this.sg = sg;
    }
    @Override
    public void giveDolls() {
        // TODO Auto-generated method stub
        System.out.println(sg.getName()+"送你玩具");
    }
    @Override
    public void giveFlowers() {
        // TODO Auto-generated method stub
        System.out.println(sg.getName()+"送你花");

    }
    @Override
    public void giveChocolate() {
        // TODO Auto-generated method stub
        System.out.println(sg.getName()+"送你巧克力");

    }
    
}

小明类

package ProxyPattern;

public class Proxy implements IGiveGift{
    Pursuit ps;
    public Proxy(SchoolGirl sg) {
        // TODO Auto-generated constructor stub
        ps = new Pursuit(sg);
    }
    @Override
    public void giveDolls() {
        ps.giveDolls();
        
    }
    @Override
    public void giveFlowers() {
        ps.giveFlowers();
        
    }
    @Override
    public void giveChocolate() {
        ps.giveChocolate();
        
    }
    
}

界面类(这里的话我们需要关注new Proxy(sg)这一行,这里我们把sg对象传进构造函数,小明的构造函数调用小军构造函数构造出小军,然后小明的送礼物方法都其实是调用小军的送礼物方法~~~)

package ProxyPattern;

public class Main {
    public void PrintFrame(){
        System.out.println("********代理模式********");
        SchoolGirl sg = new SchoolGirl();
        sg.setName("牧奴娇");
        Proxy py = new Proxy(sg);
        py.giveDolls();
        py.giveFlowers();
        py.giveChocolate();
    }
    public static void main(String[] args) {
        Main m = new Main();
        m.PrintFrame();
    }
}

结果

说一下代理模式的好处吧:①隐藏真实对象信息,比如说远程代理,虚拟gps~~,②节省开销,可以使用它存放需要实例化很长时间的对象,比如打开一个超大的HTML总是能很快打开,但是加载图片却要一张张下载③权限控制,这个很明显了④智能指引~~这个不懂不说了。

Ending... ...

 

简单来说:

普通过程:真实的类调用真实的方法

模式过程:把真实的类关注入到代理类中,代理方法也其实调用真实类的方法,但对使用者来说,他就是在操作代理类,他不知道真实类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值