第一: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=>