欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java代理模式的示例详解,

来源: javaer 分享于  点击 38654 次 点评:250

Java代理模式的示例详解,


目录
  • 定义
  • 案例
    • 需求
    • 方案:静态代理模式
  • 总结

    定义

    代理模式(Proxy Parttern) 为一个对象提供一个替身,来控制这个对象的访问,即通过代理对象来访问目标对象,这样做的话好处是可以在目标对象实现的基础上,进行额外的功能的扩展。

    案例

    需求

    苹果公司通过苹果代理商来卖手机

    方案:静态代理模式

    定义抽象接口类,该类在代理模式中扮演的是一个抽象功能的角色,该案例中就是把出售手机抽象为了一个接口

    /**
     * 售卖手机的接口(代理模式——抽象角色)
     * @author:liyajie
     * @createTime:2022/2/22 14:42
     * @version:1.0
     */
    public interface IPhone {
    
        /**
         * 出售手机
         * @author: liyajie
         * @date: 2022/2/22 14:44
         * @param
         * @return void
         * @exception:
         * @update:
         * @updatePerson:
         **/
        void sellPhone();
    }

    定义苹果手机公司类,该类在代理模式中扮演的是一个目标角色,实现了IPhone接口,重写出售手机的方法

    /**
     * 苹果公司(代理模式——目标角色)
     * @author:liyajie
     * @createTime:2022/2/22 14:46
     * @version:1.0
     */
    public class TargetPhone implements IPhone {
        @Override
        public void sellPhone() {
            System.out.println("苹果公司正在出售手机");
        }
    }

    定义代理类,通过代理类进而调用目标类的出售手机的方法,并加上自己的扩展功能

    /**
     * 代理商(代理模式——代理角色)
     * @author:liyajie
     * @createTime:2022/2/22 14:50
     * @version:1.0
     */
    public class ProxyPhone implements IPhone {
    
        private IPhone iPhone;
    
        public ProxyPhone(IPhone iPhone){
            this.iPhone = iPhone;
        }
    
        @Override
        public void sellPhone() {
            System.out.println("代理商正在循环播放广告,赚取广告商广告费");
            System.out.println("代理商正在推荐自己的电子周边产品,赚取费用");
            iPhone.sellPhone();
            System.out.println("代理商正在卖出苹果手机,赚取差价");
        }
    }

    代理商赚钱的奥秘尽在下图红框中,卖出了苹果手机赚钱,卖出了其他东西赚钱,广告费也赚钱

    定义测试类

    /**
     * 测试类
     * @author:liyajie
     * @createTime:2022/2/22 14:55
     * @version:1.0
     */
    public class Test {
        public static void main(String[] args) {
            TargetPhone targetPhone = new TargetPhone();
            ProxyPhone proxyPhone = new ProxyPhone(targetPhone);
            proxyPhone.sellPhone();
        }
    }

    查看结果

    总结

    该方案采用了静态代理的方式:

    优势:可以在不改变目标对象功能的前提下,通过代理对象对目标对象功能进行扩展

    劣势:不利于程序的扩展,需要同时维护目标对象和代理对象,程序中会产生大量的代理类,维护成本高

    到此这篇关于Java代理模式的示例详解的文章就介绍到这了,更多相关Java代理模式内容请搜索3672js教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持3672js教程!

    您可能感兴趣的文章:
    • Java代理模式的深入了解
    • 深入理解Java设计模式之代理模式
    • Java设计模式之代理模式详细解读
    • java面试常见模式问题---代理模式
    • Java设计模式之代理模式详解
    • Java线程创建静态代理模式代码实例
    • Java简单实现动态代理模式过程解析
    • 详解JAVA设计模式之代理模式
    相关栏目:

    用户点评