首页 > 编程语言 >C#代理模式

C#代理模式

时间:2023-03-04 22:36:26浏览次数:27  
标签:C# void 代理 模式 gg mm GiveDolls SchoolGirl public

定义:代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问

应用:

1.远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。

2.虚拟代表,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象

3.完全代理,用来控制真实对象访问时的权限。

4.智能指引,是指当调用真实的对象时,代理处理另外一些事。

示例代码:

interface GiveGift
{
void GiveDolls();

void GiveFlowers();

void GiveChocolate();
}

/// <summary>
/// 代理类
/// </summary>
class Proxy : GiveGift
{
Pursuit gg;
public Proxy(SchoolGirl mm)
{
gg = new Pursuit(mm);
}

public void GiveChocolate()
{
gg.GiveChocolate();
}

public void GiveDolls()
{
gg.GiveDolls();
}

public void GiveFlowers()
{
gg.GiveFlowers();
}
}

/// <summary>
/// 追求者类
/// </summary>
class Pursuit : GiveGift
{
SchoolGirl mm;
public Pursuit(SchoolGirl mm)
{
this.mm = mm;
}
public void GiveDolls()
{
Console.WriteLine(mm.Name +"送你洋娃娃");
}

public void GiveFlowers()
{
Console.WriteLine(mm.Name + "送你鲜花");
}

public void GiveChocolate()
{
Console.WriteLine(mm.Name + "送你巧克力");
}

}

/// <summary>
/// 被追求者类
/// </summary>
class SchoolGirl
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}

 

static void Main(string[] args)
{
SchoolGirl jiaojiao = new SchoolGirl();
jiaojiao.Name = "李娇娇";
Proxy daili = new Proxy(jiaojiao);
daili.GiveChocolate();
daili.GiveDolls();
daili.GiveFlowers();
Console.Read();
}

标签:C#,void,代理,模式,gg,mm,GiveDolls,SchoolGirl,public
From: https://www.cnblogs.com/KevinSteven/p/17179358.html

相关文章

  • [数学记录]arc154F Dice Game
    看这篇看懂的,感觉比洛谷题解的两篇具体不少。来写一下翻译。看懂后觉得官方题解更简练的,但显然我还是新手。思维走过的道路是无可替代的。题意:\(n\)面的骰子每次随......
  • 【LeetCode二叉树#17】在二叉搜索树中插入或删除某个值(涉及重构二叉树、链表基础、以
    二叉搜索树中的插入操作力扣题目链接(opensnewwindow)给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。输入数据保证......
  • 6.JavaScript异常处理的方式,统一的异常处理方案
    一般来说有两种处理方式①抛出异常functionopenFile(fileName){if(!exists(fileName)){thrownewError('找不到文件'+fileName)}//...}②捕......
  • 在 .NET Core 中使用 Redis 创建分布式锁
    .NETCoreRedis分布式锁,在本文中,我们将讨论如何在.NETCore中使用Redis创建分布式锁。我们在构建分布式系统的时候,会面临多个进程共同处理一个共享资源,由于一次只能......
  • 【喜报】高科技PCB行业排头兵企业S/4HANA 1709拆分项目成功上线
    2023年2月20日,SNP与金牌合作伙伴–上海翰耐信息科技有限公司一起合作的高科技行业某客户S/4HANA1709拆分项目成功上线。此项目为SNP中国的又一单S/4拆分项目。祝贺中国......
  • 2023/3/4 C#学习笔记
    调试方法1、调试工具栏,逐语句stepinto,逐过程stepover,跳出stepout;编写方法2、VisualStudio的重构代码功能:要在应用程序中多个位置写相同的或非常相似的代码时,选定方......
  • MySQL自增主键auto_increment原理 与 自增主键出现间隙不连续现象的定位
    一、背景:1.1、业务描述与SQL:为了保存机器上报信息(业务需求是每个机器只需保存最新的一条记录),原SQL语句如下(其中,machineId的为唯一索引,t_report_pad的id为bigint类型......
  • 利用ChatGPT 和Milvus快速搭建智能问答机器人
    智能问答机器人是自然语言处理领域一个很经典的问题,它用于回答人们以自然语言形式提出的问题,有着广泛的应用。其经典应用场景包括:智能语音交互、在线客服、知识获取、情感......
  • DVWA 之 Command Injection-命令注入
    二、CommandInjection-命令注入原理命令注入是指对一些函数的参数没有做过滤或过滤不严导致的,可以执行系统或者应用指令(CMD命令或者bash命令)的一种注入攻击手段。PHP命令......
  • acwing899. 编辑距离
    状态表示:两个字符串,二维数组f[i][j]集合:所有将a[1~i]变成b[1~j]的操作方式属性:最小值分类:三种,删,增,改。时间复杂度:状态数:3,转移数:O(n2),一共,O(n2)动态规划的状态转移和分......