前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式--代理模式

设计模式--代理模式

原创
作者头像
软件架构师Michael
发布2023-06-25 18:35:21
1960
发布2023-06-25 18:35:21
举报
文章被收录于专栏:软件工程师Michael

代理模式是一种常见的设计模式,它可以为其他对象提供一种代理以控制对这个对象的访问。代理对象可以在客户端和目标对象之间起到中间人的作用,可以起到隐藏目标对象的功能、保护目标对象的安全等作用。

以下是一个使用代理模式的 C# 示例代码:

首先,我们定义一个接口 ISubject,表示一个被代理对象的接口:

代码语言:javascript
复制
public interface ISubject
{
    void Request();
}

然后,我们定义一个具体的被代理类 RealSubject,实现 ISubject 接口:

代码语言:javascript
复制
public class RealSubject : ISubject
{
    public void Request()
    {
        Console.WriteLine("RealSubject handles the request.");
    }
}

然后,我们定义一个代理类 Proxy,也实现 ISubject 接口:

代码语言:javascript
复制
public class Proxy : ISubject
{
    private RealSubject realSubject;

    public void Request()
    {
        // 在调用 RealSubject 的 Request 方法之前可以进行一些额外的操作
        if (realSubject == null)
        {
            realSubject = new RealSubject();
        }
        realSubject.Request();
        // 在调用 RealSubject 的 Request 方法之后可以进行一些额外的操作
    }
}

最后,我们可以在客户端代码中使用代理类 Proxy 来调用 RealSubject 的 Request 方法,示例代码如下:

代码语言:javascript
复制
ISubject subject = new Proxy();
subject.Request();

这样,就实现了使用代理模式来控制对 RealSubject 对象的访问。在 Proxy 类中,我们可以控制 RealSubject 对象的创建和销毁,并可以在调用 RealSubject 的方法前后进行额外的操作。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档