设计模式结构型代理模式
代理模式是什么
比如你想去香港买珠宝,但是由于疫情原因,出行必须需要通行证导致你不得不找代购。 上面这句话 1.被代理人是你 2.代理人是代购
代理模式是什么(官方)
代理模式指的是给某一个对象提供一个代理,并由代理对象控制对原对象的访问(实际害是操作了原对象)。
优势
可以在不改变原来代码的基础上,对代码进行扩展,也可以理解为AOP。
静态代理和动态代理的区别
1.静态代理会导致代理类大量创建 2.动态代理 解决静态代理的问题
.Net5 实现动态代理代码分析
public interface IBuyPerson { abstract void Buy(); } public class BuyPerson : IBuyPerson { public void Buy() { Console.WriteLine("购买了珠宝"); } } /// <summary> /// 透明代理 /// </summary> public static class TransparentProxy { public static T Create<T>(T t) { dynamic tProxy = DispatchProxy.Create<T, RealProxy<T>>()!; tProxy!._Instance = t; return tProxy; } } /// <summary> /// 真实代理 /// </summary> /// <typeparam name="T"></typeparam> public class RealProxy<T> : DispatchProxy { public T _Instance = default; protected override object Invoke(MethodInfo targetMethod, object[] args) { Console.WriteLine("拥有疫情额外去香港的通行证"); return targetMethod.Invoke(_Instance,args); } } public class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); IBuyPerson test = new BuyPerson(); test=TransparentProxy.Create<IBuyPerson>(test); test.Buy(); } }
运行结果
UML图
下一篇:
【算法】Java 中栈的使用