Proxy 代理模式

Proxy 代理模式

目录

[TOC]

1. 概述

1.1. 设计模式定义

代理模式(Proxy)是通过代理对象访问目标对象,这样可以在目标对象基础上增强额外的功能,如添加权限,访问控制和审计等功能。

1.2. 自我理解

对一个对象进行封装,比如有一个老代码中间有一个核心类,需要增加监控功能,但是该功能又不需要在老业务中使用,这时候可以使用代理模式来进行额外功能的增加了。
而代理模式有两种,静态代理、动态代理

1.3. 静态代理

每一个代理类都必须实现一遍委托类(也就是realsubject)的接口,如果接口增加方法,则代理类也必须跟着修改。其次,代理类每一个接口对象对应一个委托对象,如果委托对象非常多,则静态代理类就非常臃肿,难以胜任。

1.4. 动态代理

动态代理有别于静态代理,是根据代理的对象,动态创建代理类。这样,就可以避免静态代理中代理类接口过多的问题。动态代理是实现方式,是通过反射来实现的,借助Java自带的java.lang.reflect.Proxy,通过固定的规则生成。

1.5. 代理模式的组成

Subject:主题,接口。
ConcreteSubject:具体的主题类
Proxy:代理类

2. UML

3. Example

3.1. Proxy静态代理设计模式的代码实现

3.2. Proxy动态代理设计模式的代码实现

原创文章,转载请注明: 转载自LoserZhao – 诗和远方[ http://www.loserzhao.com/ ]

本文链接地址: http://www.loserzhao.com/java/designpattern/proxy-designpattern.html

文章的脚注信息由WordPress的wp-posturl插件自动生成

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

使用新浪微博登陆