`

设计模式回顾之八:代理模式(Proxy)

 
阅读更多

设计模式回顾系列文章: 主要针对工作中常用常见的设计模式进行整理、总结,同时分享以供大家拍砖。

------------------------------------------------ 

代理模式:

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

在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象,这些额外的操作通常需要与实际对象进行通信。

 

程序实现:

抽象类,提供代理对象和真实对象的共用接口,使得任何使用真实对象的地方都能使用代理对象:

public abstract class Subject {
	public abstract void request();
}

真实对象,继承抽象类:

public class RealSubject extends Subject{
	@Override
	public void request() {
		System.out.println("handle real subject request...");
	}
}

代理对象,同样继承抽象类:

public class Proxy extends Subject{
	private RealSubject realSubject;
	
	public Proxy(RealSubject real){
		this.realSubject=real;
	}
	@Override
	public void request() {
		if(realSubject==null){
			realSubject=new RealSubject();
		}
		System.out.println("before real subject request.");//请求前处理逻辑.
		realSubject.request();
		System.out.println("after real subject request.");//请求后处理逻辑.
	}
}

程序入口:

public static void main(String[] args) {
		Proxy proxy=new Proxy(new RealSubject());
		proxy.request();
}

 

举例:权限代理(权限访问控制)、远程访问代理等。

 

关于Java动态代理:

代理类程序运行前并不存在,需要在程序运行时动态生成(无需手工编写代理类源码),那就是动态代理了。

代理类程序的生成使用的是java反射机制:需要指定类加载器、目标接口以及代理处理器(实现InvocationHandler接口的类)。

Proxy.newProxyInstance(c.getClass().getClassLoader(),c.getClass().getInterfaces(),ih); 

有兴趣的读者,请看我另外一篇blog:

http://shensy.iteye.com/blog/1698197 Java动态代理详解

 

分享到:
评论

相关推荐

    《设计模式:可复用面向对象软件的基础》英文版

    如适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、装饰者模式(Decorator)、外观模式(Facade)、享元模式(Flyweight)和代理模式(Proxy)等。 - **行为型模式**:关注于对象间的职责分配,...

    李建忠 C#面向对象设计模式纵横谈(25):设计模式总结

    在第25讲中,他集中对整个系列进行了一次全面的总结,让我们一起来回顾和探讨这些设计模式的核心要点。 设计模式是经过实践验证的、在特定场景下解决常见问题的最佳解决方案。它们是面向对象设计的智慧结晶,通过...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    从最初接触GoF的经典之作《设计模式:可复用面向对象软件的基础》,到后来的实际应用和教学过程中,作者经历了从困惑不解到豁然开朗的过程。这段旅程不仅是技术上的提升,更是思维方式的转变。 #### 1. 创建型模式 ...

    C#设计模式.PDF

    在本章节中,作者可能会回顾面向对象编程的基本概念,如封装、继承、多态等,并为后面介绍的设计模式奠定理论基础。 ### 2. 设计模式举例 这部分内容将通过具体的例子来介绍设计模式的应用场景,帮助读者理解不同...

    java设计模式迷你手册.rar

    结构型模式关注如何组合类和对象以构建更复杂的结构,如适配器模式(Adapter)、装饰器模式(Decorator)和代理模式(Proxy),这些模式能够使不同组件之间更好地协作。行为型模式则关注对象间的交互和责任分配,...

    精典设计模式

    结构型模式主要处理类和对象的组合,如适配器模式(Adapter)、装饰器模式(Decorator)和代理模式(Proxy)。行为型模式则关注对象间的行为分配,例如观察者模式(Observer)、策略模式(Strategy)和责任链模式...

    侯捷2015设计模式课件-同济

    首先,设计模式课件回顾了面向对象编程(Object-Oriented Programming,OOP)的基本原则,如封装、继承和多态,这些是设计模式依赖的基础。 接下来,课程深入讨论了GoF的设计模式。这些模式可以分为三类: 1. 创建...

    C#设计模式大全

    在深入探讨设计模式之前,我们首先回顾C#中的面向对象特性: 1. **封装**:通过将数据和操作这些数据的方法封装在一个类中来实现。 2. **继承**:允许创建一个新的类继承现有类的属性和行为。 3. **多态**:同一个...

    GoF 23种设计模式解析附C++实现源码(2nd Edition).pdf

    在完成所有设计模式的解析后,作者回顾了整个学习过程中的心路历程,包括初读GoF原著时的困惑、实现过程中遇到的问题以及最终领悟设计模式精髓时的喜悦。这一过程不仅仅是技术上的成长,更是一种思维方式的转变。 #...

    设计模式精解-GoF23种设计模式解析

    作者回顾了自己学习设计模式的过程,从最初的困惑和挑战到最终的领悟和应用,强调了实践的重要性。学习设计模式的过程不仅仅是理论上的理解,更是一种实践的过程,通过不断地实践才能真正掌握这些模式并将其应用于...

    11-回顾和总结(1).html

    代理模式( Proxy ) 外观模式( Facade ) 桥接模式( Bridge ) 组合模式( Composite ) 享元模式( Flyweight ) 行为型模式包含了: 策略模式( Strategy ) 模板方法模式( Template Method ) 观察者模式( ...

    追MM与23种设计模式

    代理模式(Proxy) 代理模式是一种结构型设计模式,它为其他对象提供一个代理以控制对这个对象的访问。在“追MM”的例子中,可以通过朋友的帮助或者间接的方式接近心仪的MM,以此降低直接接触的风险。 #### 13. ...

    算法导论 DesignPatterns Gof

    在最后一章中,作者们回顾了设计模式的发展历程,展望了未来可能的发展方向,并鼓励更多的软件工程师参与到模式社区中来。此外,书中还提供了一些基础类的定义和相关术语的解释,为读者提供了更全面的学习资源。 ...

    design-patterns-learn:设计模式学习

    结构型模式关注如何将类或对象组合成更大的结构,如适配器模式(Adapter)、装饰器模式(Decorator)和代理模式(Proxy)。行为型模式则关注对象间通信和职责分配,如观察者模式(Observer)、策略模式(Strategy)...

Global site tag (gtag.js) - Google Analytics