spring——代理模式(设计模式)

1.Spring AOP用的是哪种设计模式

  • Aspect Oriented Programming (面向切面编程)
  • 源码(JDK 动态代理和 CGLIB 动态代理)

2.谈谈你对代理模式的理解

  • 代理模式是给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。
    通俗的来讲代理模式就是我们生活中常见的中介。
  • 设计思路是:定义一个抽象的委托角色,让代理角色和目标角色分别去实现它。
  • 目标角色:实现委托角色,定义目标角色所要实现的业务逻辑,供代理角色调用。如歌星唱歌。
  • 代理角色:实现委托角色,是目标角色的代理,通过目标角色的业务逻辑方法来实现抽象方法
    在前后可以附加自己的操作,如谈合同,布置场地,收钱等。
  • 代理模式分为静态代理和动态代理。
  • 静态代理是我们自己创建一个代理类
  • 动态代理是程序自动生成一个代理
  • 举个栗子:人将事情交给黄牛,就不用做第一和最后一步了,只负责付钱就行了
interface 交警大队{
	void 处理违章();
}
class 人 implements 交警大队{
	void 处理违章(){
		//开车去交警大队,约好,排队;
		交钱消分;
		//开车回家;
	}
}
class 黄牛 implements 交警大队{
	void 处理违章(){
		黄牛帮忙开车去交警大队,约好,排队;
		帮这个人交钱消分;
		将车还回来;
	}
}
-- 交警大队:委托类
-- 黄牛:代理类
--:客户类(目标类)

3.代理模式的作用

  • 中介隔离作用:
    客户类不能直接引用委托对象,代理类对象可以在客户类和委托对象之间起到中介的作用,
    特征是代理类和委托类实现相同的接口
  • 开闭原则,增加功能:
    代理类可以增加额外的功能来扩展委托类的功能
    封装委托类,若想给项目加入缓存、日志等公共服务功能,只需修改代理类,符合开闭原则。
    代理类负责为委托类预处理消息、过滤消息、把消息转发给委托类,及事后对返回结果处理。
    代理类本身并不真正实现服务,而是同过调用委托类的相关方法,来提供特定的服务。
    真正的业务功能还是由委托类来实现,但是可以在业务功能执行的前后加入一些公共的服务。

4.有哪几种代理模式

  • 1.静态代理
  • 2.jdk动态代理
  • 3.cglib动态代理

5.静态代理和动态代理有什么区别

  • 都能实现相同的功能
  • 动态代理对类做了进一步抽象和封装,复用性和易用性提升
  • 代理创建时期不同。
    静态代理是由程序员创建或特定工具自动生成源代码,再对其编译(在程序员运行之前,代理类.class文件就已经被创建了)
    动态代理(Cglib)是在程序运行时通过反射机制动态创建的。

6.关于动态代理与AOP的关系

  • AOP是一种思想,而动态代理是一种AOP思想的实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值