代理模式,提供了对目标对象另外的访问方式,即通过代理对象访问目标对象。可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。代理模式的关键点,代理对象与目标对象。代理对象是目标对象的扩展,并会调用目标对象。
工具/原料
windows
eclipsejdk7
方法/步骤
1、静态代理需要定义接口或父类,目标对象与代理对象一起实现相同的接口或继承相同的父类。优点:可以在不修改目标对象的功能前提下,对目标对象功能进行扩展。缺点:代理对象需要与目标对象实现一样的接口,会有很多代理类。一旦接口增加方法,目标对象与代理对象都需要维护。1.定义接口类IUser
2、2.定义目标对象User与代理对象StaticUserProxy,二者同时实现接口类IUser
3、动态代理代理对象不实现接口,目标对象实现接口,可使用动态代理,否则不可使用动态代理,也茵枝诱哎叫做JDK代理,接口代理。代理对象,利用JDK的API,动态在金赇忍浆内存中构建,不需要实现接口,但需指定接口类型。代理类所在包,java.lang.reflect.Proxy,使用newProxyInstance方法创建。目标对象使用上述User,创建动态代理类DynamicProxyFacotry
4、cglib代理静漤逗庞俄态代理和动态代理模式,都需要目标对象实现一个接口,但是有时候目标对象只是一个单独鹚兢尖睁的对象,并没有实现任何的接口,这时可以使用以目标对象子类的方式类实现代理,这种方法叫做,cglib代理。也叫做子类代理,它是在内存中构建一个子类对象从而实现目标对象的扩展。1.创建目标对象Person,不实现接口
5、2.创建cglib代理类
6、测试结果