zoukankan      html  css  js  c++  java
  • 静态代理和动态代理

    代理:

    当一个类无法直接访问目标类时,就需要代理类来访问,客户类再访问代理类来实现功能

    真实示例:

    房东有一个房子,出租。租客无法直接访问到房东,需要通过中介联系租房,并收取费用

    作用:

      1.控制访问

      2.功能增强

    静态代理:

    代理类是手动实现的java文件,同时代理的目标类是规定的;

      优点:容易理解,使用方便

      缺点:在目标类较多时,会产生大量的代理类,当接口改变时,影响范围较大,改动较多

    动态代理:

    使用反射机制,在程序执行中,创建代理类对象,

      特点:不用创建类文件,代理的目标类是活动的,可设置的

      实现方式:

      1.jdk动态代理(理解),使用java反射包中的类和接口实现动态代理的功能

        反射包:java.lang.reflect

        类:invocationHandler,Method,Proxy

      2.cglib动态代理(了解)

    静态代理栗子:

    public interface Sell {
        float sell(Integer amount);
    }
    

      

    工厂

    package com.demo.factory;
    
    import com.demo.service.Sell;
    
    public class GoldKingFactory  implements Sell{
    
        @Override
        public float sell(Integer amount) {
            return 85.0f;
        }
    }
    

      

    商家:

    package com.demo.shangjia;
    
    import com.demo.factory.GoldKingFactory;
    import com.demo.service.Sell;
    
    public class TaoBao implements Sell {
        private GoldKingFactory kingFactory = new GoldKingFactory();
        @Override
        public float sell(Integer amount) {
            float price = kingFactory.sell(1);
            price +=20;
            System.out.println("翻了优惠券");
            return price;
        }
    }
    

      

    顾客:

    package com.demo.customer;
    
    import com.demo.shangjia.TaoBao;
    
    public class man {
        public static void main(String[] args) {
            TaoBao taoBao = new TaoBao();
            float price = taoBao.sell(1);
            System.out.println(price);
        }
    }
    

      

  • 相关阅读:
    图解测试之稳定性-如何开始稳定性测试
    系统稳定性保障
    系统稳定性评测
    分布式架构的架构稳定性
    app测试--稳定性测试
    服务器稳定性测试方法汇总
    服务端稳定性测试
    发票问题
    android x86 固件定制
    Nim游戏博弈(收集完全版)
  • 原文地址:https://www.cnblogs.com/ethnic/p/14538438.html
Copyright © 2011-2022 走看看