我是靠谱客的博主 端庄冬日,最近开发中收集的这篇文章主要介绍C# 代理模式、缓存器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

此时一个类,执行的为耗时动作 

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# 代理模式、缓存器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部