设计模式回顾系列文章: 主要针对工作中常用常见的设计模式进行整理、总结,同时分享以供大家拍砖。
------------------------------------------------
代理模式:
为其它对象提供一种代理以控制对这个对象的访问。
在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象,这些额外的操作通常需要与实际对象进行通信。
程序实现:
抽象类,提供代理对象和真实对象的共用接口,使得任何使用真实对象的地方都能使用代理对象:
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动态代理详解
分享到:
相关推荐
设计模式C++学习之代理模式(Proxy)
C#面向对象设计模式纵横谈(13):Proxy 代理模式(结构型模式)
C#面向对象设计模式纵横谈(13):Proxy 代理模式(结构型模式) (Level 300)
36种最新设计模式整理 Design Pattern: Simple Factory 模式 Design Pattern: Abstract Factory 模式 Design Pattern: Builder 模式 Design Pattern: Factory Method 模式 Design Pattern: Prototype 模式 ...
Android设计模式之代理模式(Proxy Pattern)
java 代理模式实现代码及设计详解:动态代理模式、静态代理模式
设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计模式之Flyweight(享元) 行为模式: 设计模式之Template 设计模式之Memento(备忘机制...
为其他对象提供一个代理以控制对这个对象的访问。
代码仅供参考学习 。
设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计模式之Flyweight(享元) 行为模式: 设计模式之Template 设计模式之Memento(备忘机制...
NULL 博文链接:https://wy649898543.iteye.com/blog/1431997
C#面向对象设计模式纵横谈(13):Proxy 代理模式(结构型模式) C#面向对象设计模式纵横谈(14):Chain of Responsibility 职责链模式(行为型模式) C#面向对象设计模式纵横谈(15):(行为型模式) Command 命令模式 ...
2、代理模式(Proxy) 用意:为其它对象提供一种代理以控制对这个对象的访问
详解设计模式中的proxy代理模式及在Java程序中的实现共14页.pdf.zip
gcr.io/kubebuilder/kube-rbac-proxy:v0.13.0 镜像
Paros+proxy:网页程序漏洞评估代理
代理模式(Proxy) 定义: 为其他对象提供一种代理以控制对这个对象的访问 结构: 由三部分组成 1.RealSubject(真实对象): 真正会调用到的对象 2.Proxy(代理对象): 代理真实对象的地方 3.Subject(共同点): 代理对象...
C++设计模式课件15_Proxy_代理模式.pdf
结构模式:设计模式之Facade(外观),设计模式之Proxy(代理),设计模式之Adapter(适配器),设计模式之Composite(组合),设计模式之Decorator(油漆工),设计模式之Bridge,设计模式之Flyweight(享元). 行为模式:设计模式之...