当前位置: 首页 > news >正文

中企动力网站软考培训机构哪家好一点

中企动力网站,软考培训机构哪家好一点,潍坊建设网站的公司,17网站一起做网店如何下单在ESFramework的设计实现中,很多地方都用到了Null Object设计模式。Null Object模式的含义在于,提供一个对象给指定的类型,用以代替这个对象为空的情况。 Null Object提供了“什么也不做”的行为,隐藏来自它的合作者的细节。对于如何理解和应…
ESFramework的设计实现中,很多地方都用到了Null Object设计模式。Null Object模式的含义在于,提供一个对象给指定的类型,用以代替这个对象为空的情况。 Null Object提供了“什么也不做”的行为,隐藏来自它的合作者的细节。
   对于如何理解和应用该模式,通过一个实例就能很好的进行说明。这一节我们在讨论消息分派器,消息分派器使用了前述的日志记录器,并且通过属性来注入具体的日志记录器对象。
        private IEsfLogger esfLogger;
        
public IEsfLogger EsfLogger
        {
            
set
            {
                
this.esfLogger = value;
            }
        }    

    现在假设,我们在消息分派器内部的多个地方使用日志记录器来进行日志记录,我们总要写这样的语句:

     if (this.esfLogger != null)
     {
          
this.esfLogger.Log(dot.gif); //记录日志
     }

    也就是说,在使用之前,我们都要判断一下日志记录器的引用是否为空,如果不为空才可以调用其Log方法。如果调用日志记录器进行日志记录的地方很多,那么每个地方都会充斥着这种判断其引用是否为空的代码。有没有办法来避免这所有的判断语句了,有!那就是使用Null Object设计模式。
    ESFramework为每种必要的组件都提供了对应的Null Object类型,这些类型的名字以“Empty”作为前缀。比如IEsfLogger对应的Null Object类型就是EmptyEsfLogger,EmptyEsfLogger实现的Log方法什么也不用做:

        public void Log(string errorType ,string msg, string location, ErrorLevel level)
        {
            
//Do Nothing !
        }

   有了EmptyEsfLogger,我们就可以象这样来设计消息分派器的日志记录器属性:

        private IEsfLogger esfLogger = new EmptyEsfLogger();
        
public IEsfLogger EsfLogger
        {
            
set
            {
                
if (value != null)
                {
                    
this.esfLogger = value ?? new EmptyEsfLogger();
                }
            }
        }

   首先,将esfLogger字段的默认值设为一个Null Object。其次,当调用者每次试图将EsfLogger属性设置为null时,也将一个Null Object赋值给该字段。
   如此一来,在消息分配器内部,我们就可以非常方便的直接使用日志记录器,而不用再判断其引用是否为空,因为无论如何,它总是指向一个有效的对象,即使这个对象是Null Object。

    除了常见的组件装配可以使用Null Object模式外,还有一个非常适合使用Null Object模式的场合,那就是“事件”。你是否还记得,我们每次触发事件时都需要判断其是否为空,这也是非常琐碎的事情,我们仍然可以通过Null Object模式来简化它。比如某个类中定义了一个事件:

public event CbSimple SomeOneConnected;

在类的构造函数中,可以使用Null Object来初始化它:

this.SomeOneConnected += delegate { };

这样,在每次触发事件时就不用再判断其是否为null了:

this.SomeOneConnected(); //不用再判断是否为null,直接触发事件

   灵活地使用Null Object设计模式,可以使得我们的代码更加简洁和精炼。


注:本文节选自我的书稿 《.NET通信框架的设计、实现与应用》

http://www.lbrq.cn/news/2708983.html

相关文章:

  • 张家港网站 设计制作seo权重优化软件
  • 纯静态做企业网站百度快照客服
  • 网站建设合同违约责任品牌营销策略分析论文
  • 做企业内部网站要多久优化大师在哪里
  • 物业服务网站建设章鱼磁力链接引擎
  • 营销网站建设的公司百度公司是国企还是私企
  • 做设计常用的素材网站sem营销是什么意思
  • 美女直接做的视频网站b2b电商平台有哪些
  • 网站 二级域名需要备案吗推广引流平台
  • 公司托管网站优化建设
  • 莱芜做网站的商家有哪些百度推广咨询
  • 深圳英文网站建设免费检测网站seo
  • 做采购 通常在什么网站看大连做优化网站哪家好
  • wordpress pdf 显示不了seo是搜索引擎优化
  • 多个域名指向同一个网站西安关键词优化平台
  • 家里的电脑ip做网站新闻发稿平台有哪些?
  • 网站后台问题有道搜索
  • 宝宝投票网站怎么做的全国疫情最新名单
  • 网站开发模学生个人网页设计模板
  • 做网站用com还是cn好织梦seo排名优化教程
  • 公司展厅设计效果图百度seo是什么
  • 淘宝上做网站698靠谱吗百度seo在哪里
  • wordpress登陆后评论seo外包公司一般费用是多少
  • 黑龙江网站设计公司平台搭建
  • 哪个网站买域名好四年级摘抄一小段新闻
  • wordpress自动生成网站地图网络公司主要做哪些
  • 太平洋建设集团网站网络运营是什么专业
  • 北京网站制作的长沙网站设计
  • 洛阳网站优化防城港网站seo
  • 网站问卷调查系统怎么做做小程序的公司
  • OpenCV 形态学操作
  • ESP32入门开发·通用硬件定时器 (GPTimer)
  • JVM的逃逸分析深入学习
  • 消费级显卡分布式智能体协同:构建高性价比医疗AI互动智能体的理论与实践路径
  • STM32H743开发周记问题汇总(串口通讯集中)
  • LCP 17. 速算机器人