代理模式

1、个人理解:被代理类与代理类同时要实现相同的接口或抽象类,在代理类中保留对被代理类的引用,实现抽象类的方法时对被代理类的方法进行调用,初始化代理类的时候要传入的参数是被代理类,当我们调用代理类的方法时实际上执被代理类的方法,也就实现了代理模式。

2、专业解释:为其他对象提供一种代理以控制对这个对象的访问。

3、代码:

1)抽象类,供代理类和被代理类去继承

1 abstract class Subject
2     {
3         public abstract void Request();
4     }

2)被代理类,继承抽象类,重写Request方法

1 class RealSubject:Subject
2     {
3 
4         public override void Request()
5         {
6             Console.WriteLine("我是真实的请求!");
7         }
8     }

3)代理类,继承抽象类,重写Request方法,将被代理类作为自己的一个字段

复制代码
 1  class Proxy : Subject
 2     {
 3         RealSubject rs;
 4         public override void Request()
 5         {
 6             rs.Request();
 7         }
 8         Proxy(RealSubject rs) {
 9             this.rs = rs;
10         }
11     }
复制代码

4)客户端代码

 public static void Main() {
            RealSubject rs = new RealSubject();
            Proxy px = new Proxy(rs);
            px.Request();
        }

 

posted @   爱生活,爱代码  阅读(141)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示