zoukankan      html  css  js  c++  java
  • 代理模式---静态代理

    代理是一种设计模式,提供了对目标对象另外的访问方式:即通过代理对象访问目标对象。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。

    这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需要修改,可以通过代理的方式来扩展该方法。

    代理分为静态代理和动态代理。本文主要讨论静态代理。

    静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或继承相同的父类。

    接口类UserDao:

    package com.ant.jdk8.proxy;
    
    public interface UserDao {
        void save();
    }

    目标类UserDaoImpl:

    package com.ant.jdk8.proxy;
    
    public class UserDaoImpl implements UserDao {
        @Override
        public void save() {
            System.out.println("保存用户");
        }
    }

    代理类UserDaoProxy:

    package com.ant.jdk8.proxy;
    
    public class UserDaoProxy implements  UserDao {
    
        private UserDao target;
    
        public UserDaoProxy(UserDao target){
            this.target = target;
        }
        @Override
        public void save() {
            System.out.println("---开始事务---");
            target.save();
            System.out.println("---提交事务---");
        }
    }

    测试类App:

    package com.ant.jdk8.proxy;
    
    public class App {
        public static void main(String[] args) {
            UserDao target = new UserDaoImpl();
            UserDaoProxy proxy = new UserDaoProxy(target);
            proxy.save();
        }
    }

    静态代理总结:

    优点:

    可以做到在不修改目标对象的功能前提下,对目标功能扩展。

    缺点:

    代理对象需要与目标对象实现同一个接口,所以会有很多代理类。同时,一旦接口增加方法,目标对象与代理对象都要维护。

    动态代理可以解决静态代理的缺点。

  • 相关阅读:
    当今手机和互联网故事
    回忆手机和互联网故事
    FAQ2010-2019
    LTM在服务器负载均衡中的运行模式
    如何让集团型企业进行IT集中管控,实现分支零IT运维
    两个优化Oracle数据库性能的方法解析
    简单描述Oracle数据库性能优化的几个要点
    A10 Thunder CFW融合防火墙保护企业应用安全
    全球甄选Azure云解决方案,直击云上核心痛点
    微软物联网开创”万物互联“新时代
  • 原文地址:https://www.cnblogs.com/i-hard-working/p/10389508.html
Copyright © 2011-2022 走看看