Java设计模式(8)结构型:代理模式

本文介绍了代理模式的概念、结构及实现方式,通过一个简单的示例展示了如何使用代理模式来控制对象的访问,同时实现了职责分离。

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

(一)模式概述

代理模式指为其他对象提供一种代理方式以控制对某个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式可以屏蔽用户真正请求的目标对象,是用户程序和目标对象解耦。 


(二)模式结构

1)抽象角色:

通过接口或抽象类声明真实角色实现的业务方法。

2)真实角色:

实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。

3)代理角色:

实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。

(注)代理模式的目的是在不改变接口的前提下,控制对象的访问。


(三)Demo

抽象角色

public interface ISource {
	public void method();
}
真实角色

public class Source implements ISource{
	@Override
	public void method() {
		System.out.println("this is Source method!");
	}
}
代理角色:

public class Proxy implements ISource {
	Source ps;
	// 此处真实对象ProxySource不能作为参数传入,目的是为了隐藏客户端对真实参数的应用
	public Proxy() {
		super();
		ps = new Source();
	}
	@Override
	public void method() {
		System.out.println("代理前操作");
		ps.method();
		System.out.println("代理后操作");
	}
}
执行过程:

public static void main(String[] args) {
	Proxy p = new Proxy();
	p.method();
}
执行结果:
代理前操作
this is Source method!
代理后操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值