设计模式-代理模式

前言

Linus Benedict Torvalds : RTFSC – Read The Funning Source Code

概述

为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

优点
第一、代理模式能将代理对象与真正被调用的对象分离,在一定程度上降低了系统的耦合度。
第二、代理模式在客户端和目标对象之间起到一个中介作用,这样可以起到保护目标对象的作用。代理对象也可以对目标对象调用之前进行其他操作。

缺点
第一、在客户端和目标对象增加一个代理对象,会造成请求处理速度变慢。
第二、增加了系统的复杂度。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
abstract class Subject {
public abstract void Request();
}
class RealSubject extends Subject {
public override void Request() {
Log.v("log", "request");
}
}
class Proxy extends Subject {
RealSubject realSubject;
public override void Request() {
if (realSubject == null) {
realSubject = new RealSubject();
}
realSubject.Request();
}
}
public static void main() {
Proxy proxy = new Proxy();
proxy.Request();
}

设计模式 目录