zoukankan      html  css  js  c++  java
  • 设计模式之代理模式

    代理模式来了!先举个例子:在校园里我们经常看到这样一幅情景,某个男生非常喜欢某某女神,但又不好意思直接大胆追求,于是就从女神身边玩得好的人着手,要她们帮忙送吃的,送玩的。。。这样间接地表达自己的心意。

    代码实现:

    被追求的女神

    public class SchoolGirl {
        private String name;
        public SchoolGirl(String name){
            this.name = name;
        }
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }

    送礼物的接口

    public interface GiveGift {
        public void giveDolls();
        public void giveFlowers();
    }

    追求者

    public class Pursuit2 implements GiveGift{
        SchoolGirl mm;
        public Pursuit2(SchoolGirl mm){
            this.mm = mm;
        }
        public void giveDolls() {
            System.out.println(mm.getName() + "送你洋娃娃");
        }
        public void giveFlowers() {
            System.out.println(mm.getName() + "送你鲜花");
        }
    
    }

    女神的闺蜜和帮忙做的事

    public class Proxy implements GiveGift{
        Pursuit2 p2;
        public Proxy(SchoolGirl mm){
            p2 = new Pursuit2(mm);
        }
        public void giveDolls() {
            p2.giveDolls();
        }
        public void giveFlowers() {
            p2.giveFlowers();
        }
        
        public static void main(String[] args){
            SchoolGirl mm = new SchoolGirl("jiaojiao");
            Proxy proxy = new Proxy(mm);
            proxy.giveDolls();
            proxy.giveFlowers();
        }
    }

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

    代理模式应用场合:

    1.远程代理,也就是为一个对象在不同地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。比如webservice。

    2.虚拟代理,是根据需要创建开销很大的对象,通过他来存放实例化需要很长时间的真实对象。比如打开很大的html页面,那些未打开的图片就是用虚拟代理替代了真实图片。

    3.安全代理,用来控制真实对象访问时的权限。

    4.智能指引,是指当调用真实对象时,代理处理另外一些事。

  • 相关阅读:
    oracle 内连接、外连接、自然连接、交叉连接练习
    oracle语句练习
    简单的oracle sql语句练习
    CountDownLatch 使用方法
    T1,T2,T3 三个线程顺序执行
    【2018 校招真题】斐波那契数列
    使用自己的域名解析 cnblogs 博客
    在 github 中新建仓库后,如何上传文件到这个仓库里面。
    数据库常用语句整理
    使用 JQuery 实现将 table 按照列排序
  • 原文地址:https://www.cnblogs.com/shicaiyou/p/9292760.html
Copyright © 2011-2022 走看看