代理模式
代理模式包含的角色:
1.定义抽象类,被代理类和真实实现类共同实现,使得任何使用真实对象的地方都可以用代理类Proxy替代。
2.真实实现类:定义代理类所代表的实现类
3.代理类:保存一个引用 使得代理可以访问实体并提供一个与抽象类的接口相同的接口,使得代理 以用来替代实体
抽象类:
/// <summary> /// 定义 Proxy与AbstractClass类的公共方法 /// </summary> public abstract class AbstractClass { public abstract void SendMessage(); }
具体实现类:
/// <summary> /// 实际执处理请类 /// </summary> class RealClass:AbstractClass { public override void SendMessage() { Console.WriteLine("小良哥通过代理发送的消息!"); } }
代理类:
/// <summary> /// 代理类 /// </summary> class Proxy : AbstractClass { private RealClass realClass; public override void SendMessage() { if (realClass == null) realClass = new RealClass(); realClass.SendMessage(); } }
客户端调用:
/// <summary> /// 客户端类 将请求发给代理类(Proxy) /// </summary> class Program { static void Main(string[] args) { Proxy proxy = new Proxy(); proxy.SendMessage(); Console.Read(); } }
总结:各种设计模式的最终目的都是为了解耦,提高重用,封装变化,用代码去实现这么多的设计模式无非就是抽象类 接口 继承,此处的代理模式就用到了继承和抽象,以后有时间再写其他设计模式的实现
作者:Chaunce
GitHub:https://github.com/liuyl1992
公众号请搜:架构师高级俱乐部 SmartLife_com
声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能等盈利行为