zoukankan      html  css  js  c++  java
  • 代理模式Proxy

    代理模式:为其他对象提供一种代理以控制对这个对象的访问。

    所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理。

    package com.qinsoft.design;
    
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    import java.lang.reflect.Proxy;
    
    
    public class ProxyClient
    {
        
        public static void main(String[] args)
        {
            //静态代理
    //        Passenger real = new RealPassenger();
    //        Passenger proxy = new StaticProxy(real);
    //        proxy.buyTicket();
            
            //动态代理
            DynamicProxy real = new DynamicProxy();
            Passenger passenger = (Passenger) real.obj(new RealPassenger());
            passenger.buyTicket();
        }
    }
    /**
     * 买票接口
     */
    interface Passenger 
    {
        void buyTicket();
    }
    
    //乘客实体
    class RealPassenger implements Passenger 
    {
        @Override
        public void buyTicket() 
        {
           System.out.print("购买了火车票");
        }
    }
    
    /**
     * 静态代理类
     */
    class StaticProxy implements Passenger {
        Passenger passenger;
    
        public StaticProxy(Passenger p) 
        {
           this.passenger = p;
        }
    
        @Override
        public void buyTicket() 
        {
           System.out.println("通过代售点");
           passenger.buyTicket();
        }
    }
    
    /**
     * 用动态代理实现
     */
    class DynamicProxy implements InvocationHandler {
        public Object obj;
        
        // 把obj交给代理类
        Object obj(Object obj) 
    {
    this.obj = obj; return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this); } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
    { System.out.println(
    "通过代理"); method.invoke(obj, args); return null; } }
  • 相关阅读:
    Java面试不得不知的程序(二)
    Java面试不得不知的问题(一)
    Java框架 面试题总结
    JavaSE 面试题总结
    JavaEE 面试题总结
    DBUtils 学习使用
    JavaWeb —— JSP 总结
    java 单例模式(singleton)
    java 上溯造型与下塑造型
    java 第六章 面向对象基础
  • 原文地址:https://www.cnblogs.com/hnhcc39/p/2866156.html
Copyright © 2011-2022 走看看