首页 > 其他分享 >代理模式

代理模式

时间:2023-05-25 15:24:35浏览次数:23  
标签:string ExecuteQuery 代理 模式 user password public

一、概念界定

委托、代理、中介

二、委托(Delegate)

委托是一种引用方法的类型,相当于C++里的函数指针。

三、代理(Proxy)

 见他如见我就叫代理,产品代理商,代购,租房代理

四、中介(Mediator)

 中间搭桥就是中介,最终双方还是要见面,租房中介

五、定义

为其他对象提供一种代理以控制对这个对象的访问。

六、总结

随着系统复杂度的发展,代理模式更偏向于是一种架构模式,在各种框架中以及与各种中间件交互是是非常常见的,而在我们自己的代码中反而很少见了,它更多的体现的是一种思想,而非代码实现。

七、示例 

现在实现当用户是管理员,能查询到真实的查询结果;当用户是普通用户时查询不到结果返回没有权限。

 1.Program.cs

internal class Program
    {
        static void Main(string[] args)
        {
            // 创建代理并尝试使用代理执行查询
            IDatabaseExecutor executorProxy = new DatabaseExecutorProxy("admin", "password");
            executorProxy.ExecuteQuery("select count(*) from users"); // 执行查询

            // 修改用户为非管理员
            executorProxy = new DatabaseExecutorProxy("user", "hello");
            executorProxy.ExecuteQuery("select count(*) from users"); // 输出 Access Denied!
        }
    }

2.IDatabaseExecutor.cs

public interface IDatabaseExecutor
    {
        void ExecuteQuery(string query);
    }

3.DatabaseExecutor.cs

public class DatabaseExecutor : IDatabaseExecutor
    {
        public void ExecuteQuery(string query)
        {
            Console.WriteLine($"Executing Query: {query}");
        }
    }

4.DatabaseExecutorProxy.cs

public class DatabaseExecutorProxy : IDatabaseExecutor
    {
        private readonly string _user;
        private readonly string _password;

        private readonly IDatabaseExecutor _executor;

        public DatabaseExecutorProxy(string user, string password)
        {
            _user = user;
            _password = password;

            _executor = new DatabaseExecutor();
        }

        public void ExecuteQuery(string query)
        {
            if (CheckAccess())
            {
                _executor.ExecuteQuery(query);
            }
            else
            {
                Console.WriteLine("Access Denied!");
            }
        }

        private bool CheckAccess()
        {
            return _user == "admin" && _password == "password";
        }
    }

 

运行结果:

 

标签:string,ExecuteQuery,代理,模式,user,password,public
From: https://www.cnblogs.com/xiao-wo-niu/p/17431371.html

相关文章

  • 设计模式整理
    责任链模式顾名思义,责任链模式(ChainofResponsibilityPattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该......
  • Java笔记(八):单例模式
    懒汉式懒汉式单例模式在第一次调用的时候进行实例化。1.适用于单线程环境(不推荐)此方式在单线程的时候工作正常,但在多线程的情况下就有问题了。如果两个线程同时运行到判断instance是否为null的if语句,并且instance的确没有被创建时,那么两个线程都会创建一个实例,此时类型Singlet......
  • 深入理解数据库中的表、用户、表空间和模式的关系
    在数据库管理系统中,如Oracle,对关键概念,包括表、用户、表空间和模式之间的关系应有较深理解。这些概念对于正确管理和保护数据库中的数据至关重要。在本文中,我们将重点整理和澄清这些概念,并解释它们之间的关系。一明确每个概念的含义。表:表是数据库中存储数据的基本结构。它由列和......
  • 设计模式(三)行为型
    1、策略模式和桥梁模式很相似,但桥梁模式的耦合更低,结构更复杂一些。 2、观察者模式观察者模式是一种行为型设计模式,当一个对象发生改变时,所有依赖它的对象都会得到通知并自动更新。这种模式也被称为发布-订阅模式或者消息机制。观察者模式包含以下几个角色:Subject(主题):被......
  • 设计模式(二)结构型
    1、代理模式创建一个代理对象来控制对另一个对象的访问,以提供额外的功能或限制。1publicinterfaceFoodService{2FoodmakeChicken();3FoodmakeNoodle();4}56publicclassFoodServiceImplimplementsFoodService{7publicFoodmakeChic......
  • 烟雨黑帽程序定制开发反向代理泛目录站群程序-自动相关词+自动采集+文章拼音繁体伪原
     我是烟雨QQ81047380,演示下客户最新定制程序,本套泛目录站群程序适用于反向代理租目录时使用,也可以使用域名做目录站群。 泛目录站群程序功能介绍:1.自动相关词,比如页面关键词是”淡水龙虾养殖“,会自动匹配相关关键词:淡水龙虾养殖技术,淡水龙虾养殖周期多久,澳洲淡水龙虾养......
  • Centos 7 Squid正向代理
    环境centos7(1台),windows(1台)Centos7,两张网卡,一张网卡是内网不能上网,IP地址为192.168.10.1/24另一张网卡设置为桥接模式要求可以上网。Windows,网卡为内网IP地址为192.168.10.2/24,DNS为192.168.10.1两边都关闭防火墙和子系统。正向代理的缺点:客户端需要单独配置,才能使用正向代理功......
  • 2P4M-ASEMI代理伟达原装单向可控硅2P4M
    编辑:ll2P4M-ASEMI代理伟达原装单向可控硅2P4M型号:2P4M品牌:韦达\WEIDA封装:TO-252正向电流:2A反向电压:600V引脚数量:3芯片个数:1芯片尺寸:漏电流:>10ua恢复时间:浪涌电流:30A包装方式:盘装封装尺寸:如图特性:单向可控硅工作结温:-40℃~150℃2P4M的电性参数:正向电流2A;反向电压6......
  • BT131-ASEMI代理KY原装双向可控硅BT131
    编辑:llBT131-ASEMI代理KY原装双向可控硅BT131型号:BT131品牌:韩景元\KY封装:TO-92特性:可控硅正向电流:1A反向耐压:600V触发电压:0.62~0.8V引脚数量:3芯片个数:1包装方式:3000pcs/盘浪涌电流:40A特点:单向可控硅工作温度:-40℃~150℃BT131应用范围:洗衣机、吸尘器、按摩器、固态继电器、交流电机......
  • 阿布云、青果网络、亿牛云、熊猫代理,隧道代理推荐哪一家?
    HTTP代理的广泛应用,隧道代理以其云端切换HTTP代理的特性、使用更加便捷显得尤为突出。不再像传统代理服务器的不断请求,隧道代理是高速HTTP隧道,通过将请求转发到不同的HTTP代理实现不断更换。目前市面上有隧道HTTP代理产品的厂商不多,也就那几家:阿布云、快代理、青果网络、小象代理、......