spring入门(13) JDK动态代理2013-07-19 史国旭 首先我们来了解一下java中的代理模式,代理模式的英文叫做Proxy或Surrogate,中文都可译为”代理“,所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。1、抽象主题角色声明了真实主题和代理主题的共同接口,这样一来在任何可以使用真实主题的地方都可以是使用代理主题2、代理主题(Proxy)角色:代理主题角色内部含有对真实主题的引用,从而可以在任何时候操作真实主题对象;代理主题角色提供一个与真实主题角色相同的接口,以便可以在任何时候都可以替代真实主题控制对真实主题的引用,负责在需要的时候创建真实主题对象(和删除真实主题对象);代理角色通常在将客户端调用传递给真实的主题之前或之后,都要执行某个操作,而不是单纯地将调用传递给真实主题对象。3、真实主题角色定义了代理角色所代表地真实对象JDK动态代理是基于接口的,必须实现了某一个或多个任意接口才可以被代理,并且只有这些接口中的方法会被代理.下面通过一个(男朋友要和女朋友分手)案例讲解JDK动态代理的实现.1、创建一个接口
package www.csdn.spring.jdk.proxy;//抽象主题 角色public interface SayGoodBye {/*** 说的内容* @param content*/public void say(String content);}package www.csdn.spring.jdk.proxy;//抽象主题 角色public interface SayGoodBye {/** * 说的内容 * @param content */public void say(String content);}2、创建接口的实现类。
package www.csdn.spring.jdk.proxy;//这是主题角色public class SayGoodByeImpl implements SayGoodBye {@Overridepublic void say(String content) {System.out.println("say:" + content);}}package www.csdn.spring.jdk.proxy;//这是主题角色public class SayGoodByeImpl implements SayGoodBye {@Overridepublic void say(String content) {System.out.println("say:" + content);}}