java中设计模式之代理模式

本文介绍了代理模式的基本概念,包括其在软件设计中的应用原理,并通过一个简单的示例代码展示了如何实现代理模式,最后列举了代理模式的主要应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代理模式是设计模式中比较简单的一种模式;

代理模式就是委托对象将部分的功能委托给代理对象来使用,代理对象就拥有委托对象的部分功能,代理对象通过调用自己的方法间接调用委托对象的方法;

比如代理律师之类的,委托人将自己的部分权限委托给代理律师使用,代理律师就拥有了委托人的一部分权限,并且可以被代理人名义上来行使权限,当然代理人不能超出这个权限;而在此这个权限的传递是通过合理的合同;

因此在编写一个代理模式是需要有公共的接口类(合同);委托对象实现公共接口(签署合同);代理对象现公共接口(签署合同);权限的信息在公共接口中定义(合同内容)

公共接口:

package com.proxy.face;
public interface Love {
	public void speak();
}

 委托对象:

package com.proxy.me;
import com.proxy.face.Love;
public class MeInfo implements Love {
	private String name;
	private String name2;	
	public MeInfo(String name,String name2) {
		super();
		this.name = name;
		this.name2 = name2;
	}
	@Override
	public void speak() {
		// TODO Auto-generated method stub
		System.out.println(name+" love "+name2);
	}
}

 代理对象:

package com.proxy.She;
import com.proxy.face.Love;
import com.proxy.me.MeInfo;
public class She implements Love {
	private MeInfo info;
	private String name;
	private String name2;	
	public She(String name,String name2) {
		this.name = name;
		this.name2=name2;
	}
	public void speak(){
		if(info==null){
			info=new MeInfo(name,name2);
		}
		info.speak();
	}
}

 代理对象行使权限:

package com.proxy.test;
import com.proxy.She.She;
import com.proxy.face.Love;
public class Test {
	public static void main(String[] args) {
		Love she=new She("I","you");
		she.speak();
	}
}

 代理对象反馈结果:

I love you

 代理模式的使用场景:

1.在对外隐藏某个类时,我们可以为该类提供代理类来访问

2.当一个类需要对不同的调用者提供不同的调用权限时,可以使用代理类来实现

3.当我们要扩展某个类的某个功能时,可以使用代理模式,在代理类中进行简单扩展

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值