java性能优化读书笔记之二《设计优化===代理模式》

实现原理参考

1. 目的

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

2. 什么是代理

它使用代理对象完成用户请求,屏蔽用户对真实对象的访问

3. 解决什么问题

在直接访问对象时带来的问题

4. 如何解决

增加中间层

5. 何时使用

想在访问一个类时做一些控制。

6. 好处

1、职责清晰。 2、高扩展性。 3、智能化

7. 角色分配
角色作用
主题接口定义代理类和真实主题的公共对外方法,也是代理类代理真实主题的方法
真实主题真实实现业务逻辑的类
代理类用来代理和封装真实主题
Main客户端,使用代理类和主题接口完成一些工作
8. 代码清单
package com.one.design;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;


public class Proxy {


}
    /**
     * 主题接口
     *
     */
    interface Account  {

        void addAccount(String name);
    }

    /**
     * 主题接口的实现类
     *
     */
    class AccountImpl implements Account {

        @Override
        public void addAccount(String name) {
            System.out.println("add acount be success{}:"+name);
        }
    }

    /**
     * 处理类
     * @author Administrator
     *
     */
    class ProxyAccount implements InvocationHandler {

        private Object target;

        public Object bind(Object target) {
            this.target = target;
            System.out.println(target.getClass().getInterfaces()[0].getName());
            //获取代理类
            return java.lang.reflect.Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);

        }

        @Override
        public Object invoke(Object proxy, Method method, Object[] arg)
                throws Throwable {
            Object result = null;
            result = method.invoke(target, arg);
            return result;
        }

    }

    /**
     * 测试类
     *
     */
    class TestProxyAccount {

        public static void main(String[] args) {
            ProxyAccount proxyAccount = new ProxyAccount();
            Account object =    (Account)proxyAccount.bind(new AccountImpl());
            object.addAccount("zhang san");

        }

    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值