代理模式分为静态代理和动态代理 ,静态代理是编译阶段就生成代理类来完成对代理对象的一系列操做。动态代理是指在运行时动态生成代理类。即代理类的字节码将在运行时生成并载入当前代理的 ClassLoader。ide
静态代理就是在程序运行前就已经肯定代理类与代理对象的代理模式,它一般用于对原有业务逻辑的扩充。好比某个接口类,并调用其中的某些方法,出于对记录日志、打印方法执行时间等的某种缘由,又没法将这些逻辑写入接口类的方法里。所以须要建立一个代理类实现和二方方法相同的方法,经过让代理类持有真实对象的方式,在原代码中调用代理类方法,以达到添加须要业务逻辑的目的。代理
须要相关资料的朋友,能够【加入此处便可打包获取】日志
1.首先建立代理类,在代理类里面实现接口,再建立声明类,而后实例化获得对象。
(1)声明一个接口类,以下图所示。对象
(2)定义一个租房子的方法,以下图所示。blog
2.具体实现须要再定义一个类,这个类实现接口类里面的方法,此时就须要经过代理来完善或者达到需求,修改这个方法或者扩展这个方法,可是又不能变更原有的方法,步骤以下:
(1)建立代理类而且实现接口,以下图所示。接口
(2)声明一个对象后进行实例获得对象,以下图所示。图片
(3)在代理类里面定义两个方法分别是代理以前和代理以后,以下图所示。get
(4)调用里面的方法,作出相应的修改,好比参数、返回值等,这也就是代理的做用。
在MainActivity里面实例化代理的类,此时为proxy类,以下图所示。it
而后运行打印一下log日志信息,效果如图1.7所示。代理的做用一目了然,清晰可见它的变化。编译
主要分享了静态代理的概念,以及如何使用静态代理。实战操做静态代理的使用以及代码的编写。