概述
此时一个类,执行的为耗时动作
namespace 结构型设计模式
{
internal class AgentcslongTime
{
public bool Getsomething()
{
Thread.Sleep(3000);
Console.WriteLine("getsomething");
Thread.Sleep(3000);
return true;
}
public void Dosomething()
{
Thread.Sleep(3000);
Console.WriteLine("dosomething");
Thread.Sleep(3000);
}
public void Waitsomething()
{
Thread.Sleep(3000);
Console.WriteLine("waitsomething");
Thread.Sleep(3000);
}
}
}
使用代理模式可以完成A对B的访问,同时不会更改B的代码。此刻称为代理模式
代理模式也可以理解为包一层。
有句话说的好,没有什么是包一层不能解决的,如果有,再包一层。
缓存器
同一件事情,如果已经执行过一次,比如去车站买票,
第一步需要到达车站,
第二部需要购买车票,
第三部需要等待排队。
而如果实例化多次的话,会重复这三个动作,但是其实第一步到达车站是不再需要重复的。这个时候就需要缓存器。
缓存器就是增加一个字典,将已经做完不需要重复做的事情加入缓存器中,当再次执行的时候进行判断。这样就可以节省其他实例带来的重复性工作。有效的增加效率。
namespace 结构型设计模式
{
internal class Agentcs:AgentcslongTime
{
//加入static的话其实可以实现单实例的作用。
private static AgentcslongTime _AgentcslongTime=new AgentcslongTime();
//实现缓存器的方法
private static Dictionary<string ,bool> keyValuePairs = new Dictionary<string ,bool>();
//代理模式,通过A完成对B的访问。 从而不对B进行修改
//代理:只能传达原有的逻辑,不能新增业务逻辑
//称呼为包一层,没有什么技术问题是包一层不能解决的,如果有,再包一层
public bool Getsomething()
{
Console.WriteLine(DateTime.Now.ToString()+"准备Getsomething");
//******************实现缓存器的方法,如果字典中有直接返回,这样可以增加效率完成缓存**********************
//******************如果没有的话就进行执行并加入到字典中**********************
bool result =false;
string key = "Getsomething";
if (keyValuePairs.ContainsKey(key))
{
result = keyValuePairs[key];
}
else
{
result = _AgentcslongTime.Getsomething();
keyValuePairs.Add(key, result);
}
//*********************************************
Console.WriteLine(DateTime.Now.ToString() + "完成Getsomething");
return true;
}
public bool Dosomething()
{
Console.WriteLine(DateTime.Now.ToString() + "准备Dosomething");
_AgentcslongTime.Dosomething();
Console.WriteLine(DateTime.Now.ToString() + "完成Dosomething");
return true;
}
public bool Waitsomething()
{
Console.WriteLine(DateTime.Now.ToString() + "准备Waitsomething");
_AgentcslongTime.Waitsomething();
Console.WriteLine(DateTime.Now.ToString() + "完成Waitsomething");
return true;
}
}
}
最后
以上就是端庄冬日为你收集整理的C# 代理模式、缓存器的全部内容,希望文章能够帮你解决C# 代理模式、缓存器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复