第一:Java静态代理的实现(本质上就是一个面向对象组合功能)
逻辑图:
在上图当中,有这么几个概念:
目标对象:Target为目标对象,即真正实现业务的对象.
代理对象:ProxyDemo为代理对象.
增强:在目标对象基础上添加的功能称之为增强.(即为被装饰者添加新的功能)
我们先定义一个接口:InterfaceA
public interface InterfaceA { public void smile();
public void cry();}
实现一个目标对象类:Target
public class Target implements InterfaceA { /** * Target为目标对象:真正实现业务的对象. * * */
@Override public void smile() { System.out.println("爱笑的女孩运气不会太差!"); } @Override public void cry() { System.out.println("男人哭吧哭吧不是罪!"); }}
在目标对象类的基础上实现我们的ProxyDemo的代理对象类.
public class ProxyDemo implements InterfaceA {
public Target target ; public ProxyDemo() { } public ProxyDemo(Target target) { this.target = target; //目标对象作为真正的属性成员. } @Override public void smile() { System.out.println("=============>smile start=========>"); target.smile(); System.out.println("=============> smile end=========>"); } @Override public void cry() { System.out.println("=============>cry start=========>"); target.cry(); System.out.println("=============> cry end=========>"); }}
启动类:
package com.zmy.proxy1;
public class test1 { public static void main(String[] args) {
ProxyDemo proxy = new ProxyDemo(new Target()); proxy.target.cry(); proxy.cry(); proxy.target.smile(); proxy.smile(); }}
运行结果:
=>cry=====> =>cry start=> =>cry=> => cry end=> =>smile=> =>smile start=> =>smile=> =====> smile end=>