文档章节

关于 Proxy 续集 -代码重构

埔枘
 埔枘
发布于 2017/08/29 22:59
字数 292
阅读 13
收藏 0

  上篇文章我们说了静态代理,那么有静态代理自然也就有动态代理咯,这次我们主要说 javaJDK给我提供的 一套动态代理。

    老规矩先看代码,

接口类:

public interface Hello {
    public void say(String name);
}

//实现类

public class HelloImpl implements Hello{
    @Override
    public void say(String name) {
        System.out.println(name);
    }

    public static void main(String[] args){
        DynamicProxy dynamicProxy = new DynamicProxy(new HelloImpl());
        Hello proxy = dynamicProxy.getProxy();
        proxy.say("一战成佛");
    }
}

//动态代理类

public class DynamicProxy implements InvocationHandler{
    private Object object;
    public DynamicProxy(Object object){
        this.object = object;
    }
    @SuppressWarnings("unchecked")
    public <T> T getProxy(){
        return (T)Proxy.newProxyInstance(object.getClass().getClassLoader(),object.getClass().getInterfaces(),this);
    }
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        berofe();
        Object invoke = method.invoke(object, args);
        after();
        return invoke;
    }
    public void berofe(){
        System.out.println("before");
    }
    public void after(){
        System.out.println("after");
    }
}

 

根据注释 很好理解 动态代理,总结下 java提供的动态代理

    优点:

        1.被代理类变动,代理不需要变动

        2.更加灵活

    缺点:

        1.依赖接口,必须要有接口 才能代理 被代理对象

 

万一 需要代理的对象没有接口,那就玩玩拉,所以下一篇 开始说CGLIB 这也是springAop实现动态代理的依赖,等着感受它的强大魅力吧

© 著作权归作者所有

上一篇: DynamicProxy--CGLIB篇
下一篇: 关于 Proxy
埔枘
粉丝 1
博文 24
码字总数 8223
作品 0
怀化
程序员
私信 提问
架构,改善程序复用性的设计~第三讲 实现一种功能的代码只能出现在一处(续)

在写完架构,改善程序复用性的设计~第三讲 实现一种功能的代码只能出现在一处 , 这篇文章后,得到了园友的反馈,说这种简单的业务逻辑还可以,但业务比较复杂时,根据就没法用这种方法。 针...

mcy247
2017/12/07
0
0
ale.js 1.0.0 发布,以组件构建用户界面的渐进式框架

Ale.js-beta.1 发布了,Ale 是一套用于以组件的形式构建用户界面的渐进式框架。 它信奉,万物皆组件。与其它大型框架不同的是,Ale 只需要你将关注点放在数据上,并不需要关心任何与视图有关...

Bd999
01/11
929
2
【Ts重构Vue】00-Ts重构Vue概要

为什么重构 本科机械设计制造及其自动化,16年稀里糊涂的进了一家干变厂,17年自学了大半年,18年正式跨行来到前端。工作中主要写业务代码,很少涉及造轮子工作,一直希望能够提高编程能力。...

峡迩
08/27
0
0
腾讯技术工程 |QQ相册后台存储架构重构与跨IDC容灾实践

作者简介:xianmau,2015 年加入腾讯 TEG 架构平台部,一直负责 QQ 相册平台的维护和建设,主导相册上传架构重构和容灾优化等工作。主要研究方向为口语对话系统、分布式系统架构设计和优化,...

腾讯技术
2018/02/01
0
0
QQ 相册后台存储架构重构与跨 IDC 容灾实践

欢迎大家前往云加社区,获取更多腾讯海量技术实践干货哦~ 作者简介:xianmau,2015 年加入腾讯 TEG 架构平台部,一直负责 QQ 相册平台的维护和建设,主导相册上传架构重构和容灾优化等工作。...

云加社区
2017/12/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Less导入选项

Less 提供了CSS @import CSS规则的几个扩展,以提供更多的灵活性来处理外部文件。 语法: @import (keyword) "filename"; 以下是导入指令的相关详情: reference,使用较少的文件但不输出。 ...

凌兮洛
14分钟前
8
0
Docker下实现MySQL主从(读、写分离)同步配置

docker下实现两个(或多个)mysql容器的主、从数据库同步配置,首先要明白docker容器的相互通信关系,默认是使用的bridge模式: 也就是说,通过docker run命令创建docker容器是每个容器都有自己...

源哥L
23分钟前
11
0
一起来学Java8(三)——方法引用

在一起来学Java8(一)——函数式编程中有一个简单的函数式编程的例子: import java.util.function.Consumer;class Person { public static void sayHello(String name) { S...

猿敲月下码
42分钟前
16
0
读书笔记:深入理解ES6(十一)

第十一章 Promise与异步编程   Promise可以实现其他语言中类似Future和Deferred一样的功能,是另一种异步编程的选择,它既可以像事件和回调函数一样指定稍后执行的代码,也可以明确指示代码...

张森ZS
今天
27
0
面试官,Java8 JVM内存结构变了,永久代到元空间

在文章《JVM之内存结构详解》中我们描述了Java7以前的JVM内存结构,但在Java8和以后版本中JVM的内存结构慢慢发生了变化。作为面试官如果你还不知道,那么面试过程中是不是有些露怯?作为面试...

程序新视界
今天
34
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部