代理模式:给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。
模式角色与结构:
示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace CSharp.DesignPattern.ProxyPattern
{
class Program
{
static void Main(string[] args)
{
Subject subject = new RealSubject();
//subject.Request(); subject = new ProxySubject();
subject.Request(); Console.ReadLine();
}
} // 抽象主题角色
abstract class Subject
{
public abstract void Request();
} // 真实主题角色
class RealSubject : Subject
{
public override void Request()
{
// 业务方法具体实现代码
}
} // 代理主题角色
class ProxySubject : Subject
{
private RealSubject realSubject = new RealSubject(); // 维持一个对真实主题对象的引用 public void PreRequest()
{ } public override void Request()
{
PreRequest(); // 预处理
realSubject.Request(); // 调用真实主题对象方法
PostRequest(); // 完成处理
} public void PostRequest()
{ }
}
}