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

    什么是代理模式?

      对于一个类的方法的调用,不直接通过该类的对象来调用方法,程序里有一个专门的代理类,通过调用代理类的方法来实现真实类内部方法的调用。

      特征是:代理类和委托类有同样的接口,代理类主要负责为委托类预处理信息、过滤信息、把信息转发给委托类、以及时候处理信息等。代理类对象类本身并不真正实现服务,而是通过调用委托类的相关对象的方法,来提供特定的服务。

    代理分为静态代理和动态代理

    静态代理:

    /**
     * 1.创建接口
     */
    public interface IUserAccount {
        void getMoney(double money);
    
        void search();
    }
    /**
     * 创建接口实现类
     */
    public class Useroperaton implements IUserAccount{
        @Override
        public void getMoney(double money) {
            System.out.println("小明用户取了"+money+"元");
        }
    
    
        public void getTrueMoney(double money, Date date) {
            System.out.println("小明用户取了"+money+"元,取钱的时间为:"+date);
        }
        @Override
        public void search() {
            System.out.println("小明查询了账户余额");
        }
    }
    /**
     * 代理类要实现代理对象的接口
     */
    public class ProtyDemo implements IUserAccount {
        private Useroperaton useroperaton = null;//被代理类对象
    
        public ProtyDemo(Useroperaton useroperaton) {
            this.useroperaton = useroperaton;
        }
    
        public void getMoney(double money) {
            System.out.println("代理真实方法执行前,切入的代码执行了");
            useroperaton.getTrueMoney(1000,new Date());
            System.out.println("代理真实方法执行后,切入日志保存代码");
        }
    
        @Override
        public void search() {
            useroperaton.search();
        }
    }
    /**
     * 测试方法
     */
    public class Demo {
        public static void main(String[] args) {
            ProtyDemo protyDemo = new ProtyDemo(new Useroperaton());
            protyDemo.getMoney(1000);
        }
    }
    /**
    * 代理模式的优点:
    * 1.可以隐藏代码的真实方法,代码的实现更安全
    * 2.可以在代理类集中的切入某些代码,如日志的切入
    * 缺点:
    * 1.由于在客户端和真是主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢
    * 2.实现代理模式需要额外的工作,有些代理模式的实现非常复杂。
    */
  • 相关阅读:
    centos7.0 增加/usr分区的容量减少home分区的大小
    centos7.0 crontab 的yii计划任务没有执行
    centos7.0 tomcat9.0 ip访问 manager
    oracle 基础知识(十五)----高水位线
    oracle12C--新特性
    oracle12C--DG搭建配置
    oracle 笔记---(七)__角色
    oracle 笔记---(六)__表空间
    oracle 笔记---(五)__内存管理
    oracle 笔记---(四)__数据字典
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/11141934.html
Copyright © 2011-2022 走看看