13代理模式

代理模式

<设计模式其实很简单>笔记

①定义:

为其他对象提供一种代理以控制对这个对象的访问。


②代码:
//抽象的父类
public abstract class Subject{
	public abstract void Request();
}
//真实类
public class RealSubject extends Subject{
	//覆盖父类的抽象方法
	@Override
	public void Request(){
		System.out.println("the real request");
	}
}
//代理类
public class Proxy extends Subject{
	private RealSubject realSubject;
	public Proxy(){
		realSubject = new RealSubject();
	}
	@Override
	public void Request(){
		realSubject.Request();
	}
}
//客户端代码
public static void main(String[] args){
	Subject proxy = new Proxy();
	proxy.Request();
}
//实际工作的是RealSubject类的对象,代理类Proxy作为一个桥梁隐藏了RealSubject对象的存在。
//代理模式是通过转发调用来实现的。也就是代理对象和被代理对象是紧耦合的。



③适用的地方:
当需要为一个对象在不同的地址空间提供局部的代表时
当需要创建开销非常大的对象时。
当需要控制对原始对象的访问时。
当需要在访问对象时执行一些附加操作时。
④Java中的代理模式
--静态代理
使用代理模式来实现。
--动态代理
动态生成代理对象。 与普通的代理模式的区别在于动态代理中的代理类是由java.lang.reflect.Proxy类在运行时根据接口定义,采用Java反射机制动态生成。和java.lang.reflect.InvocationHandler结合,可以加强现有类的方法实现。
动态代理的步骤:
>新建生成动态代理对象类,实现java.lang.reflect.InvocationHandler接口
>新建一个方法用于生成代理对象并返回该对象
>实现接口方法invoke,一般会将额外的操作置于此处
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值