• 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();
        }
    }

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

  • 相关阅读:
    MVC页面打印成pdf插件Rotativa
    lambda表达式嵌套
    MVC+EF五种条件查询获取数据列表方式
    自己写的通用分页存储过程
    Llinux命令大全之软件管理命令
    .net开发 chrome核心浏览器组件
    常用的SQL日期操作
    Linux各版本介绍说明
    大数据环境搭建
    markdown语法链接新页面打开
  • 原文地址:https://www.cnblogs.com/zhuxiansheng/p/7891755.html
Copyright © 2020-2023  润新知