• java 之 代理模式(大话设计模式)


    java代理模式顾名思义,就类似于大学,我想和冰可乐,可是我又在玩游戏,于是我让我的室友帮我把可乐带回来,简单的来说我的室友就是代理,而买可乐就是需要做的行为。这是笔者理解的代理模式

    大话设计模式-类图

    要想实现代理,那么代理类和被代理的类就都要实现一个共同的接口,就刚刚买可乐的例子,我和我的室友都可以买可乐。

    代理类可以动态的去做一些事情,例如室友心情不好不帮你买可乐了,或者心情好,在买可乐的同时还赠送我一个冰激凌,当然这是生活的例子,实际工作中,我们往往会遇到一些需要代理,但又不想给全部权限,

    这时我们可以赋予代理类一个只有局部权限的对象。

    下面是就刚刚例子的JAVA代码:

    /**
     * 拥有共同行为的接口
     */
    public interface ISubject {
    
        public void buyKole();
    }
    /**
     * 室友,帮买可乐
     */
    public class ProxyRoommate implements ISubject{
    
        private RealSubjectI realSubjectI;
    
        public ProxyRoommate(RealSubjectI realSubjectI) {
            this.realSubjectI = realSubjectI;
        }
    
        @Override
        public void buyKole() {
            //TODO 这里可以做很多事情,甚至决定不去执行买可乐
            realSubjectI.buyKole();
            System.out.println("心情好送你一块冰激凌");
        }
    }
    /**
     * 被代理类
     */
    public class RealSubjectI implements ISubject{
    
        @Override
        public void buyKole() {
            System.out.println("去买可乐");
        }
    }
    /**
     * 客户端
     */
    public class Test {
    
        public static void main(String[] args) {
    
            ProxyRoommate proxyRoommate = new ProxyRoommate(new RealSubjectI());
            proxyRoommate.buyKole();
        }
    }

    以上是笔者对代理模式的理解,希望能帮助正在学习设计模式的童鞋!

  • 相关阅读:
    hdu 4614 线段树 二分
    cf 1066d 思维 二分
    lca 最大生成树 逆向思维 2018 徐州赛区网络预赛j
    rmq学习
    hdu 5692 dfs序 线段树
    dfs序介绍
    poj 3321 dfs序 树状数组 前向星
    cf 1060d 思维贪心
    【PAT甲级】1126 Eulerian Path (25分)
    【PAT甲级】1125 Chain the Ropes (25分)
  • 原文地址:https://www.cnblogs.com/zhuxiansheng/p/7891755.html
Copyright © 2020-2023  润新知