java第一课---反射和代理模式的学习

  大家都知道设计模式有23种,但是每种的含义、实际的应用都很模糊。自己从16年4月从培训班出来工作就没有认真的理解过设计模式,都是拼了命的在做业务开发。所以成长的第一阶段就是先把23种设计模式好好理理。

设计模式的分三大类:

创建型模式

  工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式

  适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式

行为模式

  策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

  今天还学了反射,通过视频和百度的资料,简单总结一下什么是反射。官方的原话是:“Java反射指的是在Java程序运行状态中,对于任何一个类,都可以获得这个类的所有属性和方法;对于给定的一个对象,都能够调用它的任意一个属性和方法。这种动态获取类的内容以及动态调用对象的方法称为反射机制。

  反射机制是破坏了JAVA面向对象开发原则的,当然我觉得是也是为了实际的应用而存在的,毕竟用到反射的地方很多。比如:

  1. JDBC驱动链接加载 class.forname("类的绝对路径")的方法
  2. IOC容器的注入
  3. 自定义注解(AOP+反射)
  4. 第三方框架
  5. 持久层的代码生成器
  6. 破解常用的单例方法(除了枚举,只是特例)

  今天讲的是设计模式中的代理模式,其实工作中大家无形中都用到过这种模式的,只是以前我也不知道这叫就代理模式。代理模式主要分静态代理和动态代理。代理模式最核心的点就是对方法前后的业务(逻辑)进行增强处理,或者说统一处理。

代理模式的优点:减少代码冗余,提高代码复用性,安全性 隐藏真实角色、非侵入。

静态代理与动态代理

静态代理:也需要开发者自己编写代理类。这也是静态代理的缺点。

静态的实现方式:1.实现接口(Jdk实现)2通过继承模式(Cglib)

动态代理设计需要写代理,统一采用程序生成。动态代理最简单的理解就是我们不需要去写被代理层,而且程序自己生成。动态代理是在实现阶段不用关心代理类,而在运行阶段才指定哪一个对象。动态代理类的源码是在程序运行期间由JVM根据反射等机制动态的生成 。

Jdk动态代理

JDK动态代理的一般步骤如下:

1.创建被代理的接口和类;

2.实现InvocationHandler接口,对目标接口中声明的所有方法进行统一处理;

3.调用Proxy的静态方法,创建代理类并生成相应的代理对象;

实现原理:利用拦截器机制必须实现InvocationHandler接口中的invoke方法实现对我们的目标方法增强。

---------------------------------------------------------------

今天就先总结到这里,下次继续写代理模式中CGLIB实现如果实现代理模式,为什么比JDK动态代理效率高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值