静态代理

代理模式

是模式中的一种,其实代理模式是 静态代理。而JDK中的代理是动态代理。

代理模式,有三个组件:抽象主题、真实主题、代理主题。

代理模式,是对于被代理对象进行访问拦截。

装饰模式,意图对于原油对象进行功能增强。

 

动态代理 和 静态代理 区别?

*静态代理:编写代理类,代理类引用被代理对象target。

*动态代理,代理的类,是由程序员的程序在内存中动态创建的,代理类不是由程序员创建的。

jdk1.3引入了动态代理技术。

 

-------------------------------------------------------------------------------------------------

*静态代理,实例代码:

package cn.gp.proxy.proxypattern;

//主题

public interface Subject {

public void request();//请求方法

}

 

 

package cn.gp.proxy.proxypattern;

//真实主题

public class RealSubject implements Subject{

 

@Override

public void request() {

System.out.println("真实主题方法。。。。");

}

}

 

 

package cn.gp.proxy.proxypattern;

//代理主题

public class ProxySubject implements Subject{

 

//必须持有真实主题的引用

private Subject target;

 

//设置真实主题的方法

public void setTarget(Subject target) {

this.target = target;

}

 

@Override

public void request() {

//拦截真实主题的访问

System.out.println("拦截真实主题的访问。。。。");

System.out.println("可以进行方法增强,如性能监视、事务管理、安全检查、缓存");

 

//调用真实主题

target.request();

 

System.out.println("可以进行方法增强,如性能监视、事务管理、安全检查、缓存");

}

}

 

 

package junit;

 

import org.junit.Test;

 

import cn.gp.proxy.proxypattern.ProxySubject;

import cn.gp.proxy.proxypattern.RealSubject;

import cn.gp.proxy.proxypattern.Subject;

 

public class ProxyTest {

@Test

public void testProxy(){

//获得真实主题

Subject realSubject = new RealSubject();

//获得代理主题

ProxySubject proxySubject = new ProxySubject();

//对真实主题进行代理

proxySubject.setTarget(realSubject);

 

proxySubject.request();

}

}

------------------------------------------------------------------------------------------------

*动态代理,在实际应用中更为多见。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值