我是靠谱客的博主 认真寒风,最近开发中收集的这篇文章主要介绍大话设计模式之代理模式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

参考—->程杰大神的《大话设计模式》—org
记一下一遍以后重复看时有新的理解,メモ

这里写图片描述

代理模式
在访问对象时引入一定的程度的间接性,因为这种间接性,可以附加多种用途。
代理模式应用-
1 远程代理 一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。
2 虚拟代理 根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真是对象
3 安全代理 用来控制真实对象访问时的权限 一般用于对象应该有不同的访问权限
4 智能指引 指的是当调用真是对象时,代理处理另外一些事
実は 上記の場合はよくわからないが一応メモしておく
理解できない。。。
代码对应的UML图
这里写图片描述

一个送礼物的接口


public interface GiveGift {

    void GiveDog();
    void GiveCat();
    void GivePig();
}

实体类(代理要去替代的实体类)

/**
 * 此类是代理要真实访问的实体类
 * 
 * */
public class Pursuit implements GiveGift {

    private SchoolGril sg;

    public Pursuit(SchoolGril sg) {
        super();
        this.sg = sg;
    }

    @Override
    public void GiveDog() {
        // TODO Auto-generated method stub
        System.out.println(sg.getName()+"----->GiveDog");
    }

    @Override
    public void GiveCat() {
        // TODO Auto-generated method stub
        System.out.println(sg.getName()+"----->GiveCat");

    }

    @Override
    public void GivePig() {
        // TODO Auto-generated method stub
        System.out.println(sg.getName()+"----->GivePig");

    }

}

接受礼物的人


public class SchoolGril {

    private String name ;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


}

代理类

public class Proxy implements GiveGift {

/**
 *   在代理类中引用一个可以访问的实体,并提供一个与
 *  Subject的接口相同的接口这样代理便可以替代实体
 * */
    Pursuit ps;

    public Proxy(SchoolGril sg) {
        super();
        ps = new Pursuit(sg);
    }

    @Override
    public void GiveDog() {
        // TODO Auto-generated method stub
        ps.GiveDog();
    }

    @Override
    public void GiveCat() {
        // TODO Auto-generated method stub
        ps.GiveCat();
    }

    @Override
    public void GivePig() {
        // TODO Auto-generated method stub
        ps.GivePig();
    }

}

测试类


public class TestProxy {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        SchoolGril sGril=new SchoolGril();
        sGril.setName("tom");
        /**
         * 直接通过代理给这个女生礼物
         * */
        Proxy proxy = new Proxy(sGril);
        proxy.GiveDog();
        proxy.GiveCat();
        proxy.GivePig();
    }

}

输出结果
这里写图片描述

最后

以上就是认真寒风为你收集整理的大话设计模式之代理模式的全部内容,希望文章能够帮你解决大话设计模式之代理模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(28)

评论列表共有 0 条评论

立即
投稿
返回
顶部