`
jaesonchen
  • 浏览: 313255 次
  • 来自: ...
社区版块
存档分类
最新评论

Proxy模式

 
阅读更多
interface IService {
	public void execute();
}
class ServiceImpl implements IService {
	public ServiceImpl() {
		System.out.println("ServiceImpl is create");
	}
	@Override public void execute() {
		System.out.println("ServiceImpl.service is running......");
	}
}
public class Proxy implements IService {
	
	private IService service;
	
	public Proxy(IService service) {
		this.service = service;
	}
	
	@Override public void execute() {
		System.out.println("Proxy.service is calling ......");
		this.service.execute();
	}

	public static void main(String[] args) {

		IService proxy = new Proxy(new ServiceImpl());
		proxy.execute();
		
		IService virtualProxy = new VirtualProxy();
		virtualProxy.execute();
	}
}
//虚拟代理
class VirtualProxy implements IService {
	
	private IService service;
	public VirtualProxy() {}
	
	@Override public void execute() {
		System.out.println("VirtualProxy.service is calling ......");
		if (this.service == null)
			this.service = new ServiceImpl();
		this.service.execute();
	}
}

 输出为:

ServiceImpl is create
Proxy.service is calling ......
ServiceImpl.service is running......
VirtualProxy.service is calling ......
ServiceImpl is create
ServiceImpl.service is running......

 

 

 * 代理模式:代理类与业务类实现同一个业务接口,代理类通过构造器参数持有业务类对象。
   代理类在实现业务方法时,调用真正的业务对象方法实现业务逻辑,并可以在业务方法中进行权限控制

   以及添加切面逻辑,从而实现对业务类的代理。
 
 * 意图: 为其他对象提供一种代理以控制对这个对象的访问。 
 
 * 远程代理(Remote  Proxy)为一个位于不同的地址空间的对象提供一个本地的代理对象。
 * 虚拟代理(Virtual Proxy)根据需要创建开销很大的对象。如果需要创建一个资源消耗较大的对象,

   先创建一个消耗相对较小的对象来表示,真实对象只在需要时才会被真正创建。
 * 保护代理(Protection Proxy)控制对原始对象的访问。保护代理用于对象应该有不同的访问权限的时候。
 * 延迟加载,用代理模式实现延迟加载的一个经典应用就在 Hibernate 框架里面。
 * 指针引用,是指当调用真实的对象时,代理处理另外一些事。比如计算真实对象的引用次数。

分享到:
评论

相关推荐

    Proxy 模式学习代码

    Proxy模式是一种设计模式,它允许我们为一个对象创建一个代理对象,这个代理对象在客户端和目标对象之间起到中介的作用。这种模式在软件工程中广泛应用,主要用于控制对真实对象的访问,提供额外的功能,如日志、...

    简单工厂模式,工厂方法模式,抽象工厂模式和Proxy模式

    到工厂方法到抽象工厂,这几种都带有“工厂”的模式,总是容易叫人迷糊,我仔细研究了下,然后用简单的例子做类比,列出了自己的通俗理解和比较,大部分是自己的体会,感觉理的比较清楚,末尾提了下Proxy模式。

    基于Proxy模式的分布式MySQL数据库中间件设计源码

    MySQL数据库中间件:基于C语言开发,包含59个文件,包括22个C源文件...该项目是一个分布式MySQL数据库中间件,采用Proxy模式设计,基于核心业务对象切分,旨在提供高效的数据库查询和处理能力,适用于分布式系统环境。

    从房屋买卖看 java proxy 模式

    标题中的“从房屋买卖看 java proxy 模式”暗示了我们将通过一个具体的场景来探讨 Java 中的代理(Proxy)模式。在软件设计中,代理模式是一种结构型设计模式,它为其他对象提供一种代理以控制对这个对象的访问。在...

    C++ Proxy模式

    Proxy模式是软件设计模式中的一个关键元素,属于结构型模式的一种。在C++中,Proxy模式主要用于为其他对象提供一种代理以控制对这个对象的访问。这种模式的核心思想是通过创建一个代理对象来充当目标对象的中介,...

    设计模式C++学习之代理模式(Proxy)

    代理模式是一种设计模式,它是结构型模式之一,主要用于在客户端和目标对象之间建立一个代理对象,以便控制对目标对象的访问。在C++中,代理模式可以用来为其他对象提供一种代理以控制对这个对象的访问,或者增加...

    设计模式之代理模式proxy.zip

    JDK动态代理基于接口实现,它要求目标对象必须实现至少一个接口,然后通过Proxy类和InvocationHandler接口来创建并控制代理对象。当我们调用代理对象的方法时,实际执行的是InvocationHandler的invoke方法,这样可以...

    Proxy代理模式经典实例(绝对OOP)

    在Java中,Proxy模式主要依赖于Java的动态代理机制,这通常涉及到`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`两个核心接口。`Proxy`类用于生成代理对象,而`InvocationHandler`接口定义了...

    apache+tomcat负载均衡_proxy模式

    内附完整配置教程和修改后的apache的httpd.conf文件和tomcat的server.xml配置文件,包含test测试项目,不包含apache和tomcat安装文件。 本教程参考网上资料,本机测试成功,如有问题可以私信说明。

    详解设计模式中的proxy代理模式及在Java程序中的实现

    Proxy模式是设计模式中的一种,它提供了一种对对象访问的控制手段,使得在不修改原有对象的基础上,可以通过代理对象来扩展或增强原有对象的功能。在Java编程中,Proxy模式的应用非常广泛,尤其是在处理远程调用、...

    Programming_Proxy_classic_code_delphi.rar_delphi Proxy_proxy_pro

    Proxy模式是一种设计模式,其主要目的是为其他对象提供一个代理以控制对这个对象的访问。在Delphi中,Proxy可以用于创建远程代理,使得客户端可以像操作本地对象一样操作远程服务。这种模式在分布式系统、数据访问...

    23种设计模式整理pdf

    Proxy 模式是一种结构型模式,用于提供一种访问对象的接口。Proxy 模式的优点是可以提供一种统一的访问对象的接口,减少了代码的耦合度。Proxy 模式的缺点是它可能会增加代码的复杂度。 7. Adapter 模式 Adapter ...

    二十三种设计模式【PDF版】

    设计模式之 Proxy(代理) 以 Jive 为例,剖析代理模式在用户级别授权机制上的应用 设计模式之 Facade(门面?) 可扩展的使用 JDBC针对不同的数据库编程,Facade提供了一种灵活的实现. 设计模式之 Composite(组合) ...

    设计模式1,FACADE模式,Adapter

    本文将深入探讨FACADE模式、Adapter模式以及Singleton和Proxy模式的基本概念、应用场景和关键要素。 首先,FACADE(外观)模式是一种接口型模式,它的主要作用是为复杂的子系统提供一个简单的接口,使得客户端无需...

    JavaScript设计模式与开发实践.pdf

    由浅入深地讲解了16个设计模式,包括 singleton模式、Factory模式、Abstract Factory模式、Builder模式、Prototype模式、Adapter模式、Bridge模式、Composite模式、Decorator模式、Flyweight模式、Proxy模式、Chain ...

    java实现Proxy例子

    我自己用eclipse写的java代码,可以直接用eclipse导入,也可以直接用java -jar proxy_sample.jar执行 代码量很小,尽量通过注释进行说明 本例实现了InvocationHandler...在研究代理模式(Proxy模式)的朋友可以交流一下

    设计模式的几个简单例子

    Proxy模式是一种行为型设计模式,它为其他对象提供一种代理以控制对这个对象的访问。在提供的代码中,`ICar`接口定义了`MoveCar()`方法,它是所有汽车类需要遵循的行为规范。`ProxyCar`类是代理,实现了`ICar`接口,...

    C++设计模式.pdf

    Proxy模式为其他对象提供一个代理以控制对这个对象的访问,可以实现延迟加载、权限控制等功能。 ### 行为模式 #### Template Method模式 Template Method模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类...

Global site tag (gtag.js) - Google Analytics