代理模式:给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。
模式角色与结构:
示例代码:
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() { } } }