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; } }
  • 相关阅读:
    实现用户信息的增删改-mongoose数据库操作
    gulp使用流程及常用插件
    Js面向对象动态添加标签页,Tab栏切换
    类似淘宝侧边栏jq代码编写
    jQuery选择器
    jQuery-突出显示案例
    隔行变色加高亮显示
    ajax请求到后台
    LOOK OUT THE HOLE!
    应用keyup监测输入框兼容IE处理
  • 原文地址:https://www.cnblogs.com/hnhcc39/p/2866156.html
Copyright © 2011-2022 走看看