当我们由于某些原因,不能或者不需要对角色进行直接访问的时候,那么我们就可以通过代理对象去实现我们的具体行为,这个代理对象类似于媒婆的作用。
using System; using System.Collections; using System.Collections.Generic; using System.Linq; namespace ConsoleApplication1 { class Program { /// <summary> /// 抽象角色 /// </summary> public abstract class Role { public abstract void BuyProduct(); } /// <summary> /// 真实角色 /// </summary> public class RealBuyRole : Role { public override void BuyProduct() { Console.WriteLine("buy something"); } } /// <summary> /// 代理角色 /// </summary> public class Proxy:Role { private RealBuyRole realRole; public override void BuyProduct() { if (realRole == null) { realRole = new RealBuyRole(); } this.PreBuyProduct(); // 调用真实角色方法 realRole.BuyProduct(); this.PostBuyProduct(); } /// <summary> /// 代理角色的前置行为 /// </summary> public void PreBuyProduct() { Console.WriteLine("买东西前做的事情"); } /// <summary> /// 代理角色的后置行为 /// </summary> public void PostBuyProduct() { Console.WriteLine("买东西后做的事情"); } } static void Main(string[] args) { Role proxy = new Proxy(); proxy.BuyProduct(); } } }
时间: 2024-10-10 05:50:20