当前位置:  编程技术>.net/c#/asp.net

C#对象为Null模式(Null Object Pattern)实例教程

    来源: 互联网  发布时间:2014-11-04

    本文导语:  本文以实例形式简单讲述了C#对象为Null模式(Null Object Pattern),分享给大家供大家参考。具体实现方法如下: 所谓的"对象为Null模式",就是要求开发者考虑对象为Null的情况,并设计出在这种情况下的应对方法。 以前面"C#策略模...

本文以实例形式简单讲述了C#对象为Null模式(Null Object Pattern),分享给大家供大家参考。具体实现方法如下:

所谓的"对象为Null模式",就是要求开发者考虑对象为Null的情况,并设计出在这种情况下的应对方法。

以前面"C#策略模式(Strategy Pattern) "一文中的例子来说,在我们的客户端程序中只考虑了用户输入1,2,3的情况,如果用户输入其它数字,比如4,就没有一个对应的IBall接口实现类实例产生,于是会报如下的错:

为了应对这种情况,我们专门设计一个类,当用户输入1,2,3以上的数字,就产生该类的实例。该类同样实现IBall接口。

public class Others : IBall
{
    public void Play()
    {
      Console.WriteLine("您选择的球类项目目前还不存在~~");
    }
}

在客户端程序中,修改为:

class Program
{
    static void Main(string[] args)
    {
      IBall ball = null;
      SportsMan man = new SportsMan();
      while (true)
      {
        Console.WriteLine("选择你喜欢的球类项目(1=足球, 2=篮球,3=排球)");
        string input = Console.ReadLine();
        switch (input)
        {
          case "1":
            ball = new Football();
            break;
          case "2":
            ball = new Basketball();
            break;
          case "3":
            ball = new Volleyball();
            break;
          default:
            ball = new Others();
            break;
        }
        man.SetHobby(ball);
        man.StartPlay();
      }
    }
}

以上,在swich语句中的default部分,当用户输入1,2,3以外的数字,就创建一个同样实现IBall接口、专门处理Null的类实例。      

相信本文所述实例对大家C#程序设计的学习有一定的借鉴价值。


    
 
 

您可能感兴趣的文章:

  • c#对象中两种copy操作:深拷贝(Deep Copy)与浅拷贝(Shallow Copy)
  • C#托管堆对象实例包含内容分析
  • C#利用反射来判断对象是否包含某个属性的实现方法
  • C#中遍历DataSet数据集对象实例
  • c#泛型序列化对象为字节数组的示例
  • c#动态编译执行对象方法示例 运用映射机制创建对象
  • php中检测变量是否是一个对象的is_object函数介绍及用法举例 iis7站长之家
  • c#创建Graphics对象的三种方法
  • C# DataTable 转换为 实体类对象实例
  • 使用c#面向对象实现对数据库的操作的代码
  • c# List find()方法返回值的问题说明(返回结果为对象的指针)
  • C#中Monitor对象与Lock关键字的区别分析
  • C#从实体对象集合中导出Excel的代码
  • 浅析C#中数组,ArrayList与List对象的区别
  • 自定义实现Json字符串向C#对象转变的方法
  • c#实现数据同步的方法(使用文件监控对象filesystemwatcher)
  • C#判等对象是否相等的方法汇总
  • C# 面向对象的基本原则
  • C#面向对象特征的具体实现及作用详解
  • C#基础之数组排序、对象大小比较实现代码
  • C#中的DataSet、string、DataTable、对象转换成Json的实现代码
  • 不再用到的对象要置成null,请举个例子
  • 用request.setAttribute()方法传递对象,取的时候是null,怎么回事?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 各位高手知道在JAVA中如何用一个名称创建一个对象实例,并调用其方法,注意:在编写代码时并不知要创建的对象的类名,也并不知方法名
  • 不能把一个抽象类中的对象实例化?
  • “当某个实例不再被任何对象引用时就会被垃圾回收机制回收”,那么怎样才算是不被任何对象引用呢?
  • 怎样检测一个对象的实例的存在,并且删除它?程序是怎样实现的?谢谢!
  • C++里能不能在指定的一块内存中创建对象的实例?
  • 菜鸟问题(对象数组):对于clsA []=new claA[10];语句执行后是否已经拥有了类clsA的10个实例对象,还是要再for i=0 to 9对clsA[i]=new clsA一下?
  • 实例化对象的问题。
  • java 如何获取对象实例的大小
  • 怎样判断一个对象是通过什么类实例化出来的?
  • 一个关于判断实例对象已经存在的问题
  • 深入理解Java对象实例生成的例子
  • php初始化对象和析构函数的简单实例
  • java对象转型实例分析
  • jquery使用jquery.zclip插件复制对象的实例教程
  • PHP面向对象程序设计之类常量用法实例
  • C++实现动态分配const对象实例
  • php对象实例化的例子
  • 如何使用利用RTTI创建的对象实例??
  • ACE仅仅实例化一个对象ACE_TP_Reactor tpReactor程序就退出,请高手指教
  • 请问为什麽在J2ee中客户端(测试时)用jndi定位enterprise bean的时候,可以把远程接口实例化?接口不是不可以生成对象的吗?
  • Python namedtuple对象json序列化/反序列化及对象恢复
  • jquery对象和javascript对象即DOM对象相互转换
  • c++类对象数组初始化方式
  • 请问如何把StringBuffer 的对象转化成一个InputStream 的对象,或者InputStream 子类的对象也可以!
  • php中检测变量是否是一个对象的is_object函数介绍及用法举例
  • 判断一个对象是否为jquery对象的方法
  • c++类对象初始化方式
  • Glib对象系统(也称为"GObject")内部是如何实现面向对象特征的呢?
  • java tomcat实现Session对象的持久化原理及配置方法介绍
  • 用RMI进行远程对象调用的时候,可不可以实现多个调用远程对象的并发操作
  • 将ResultSet结果集中的记录映射到Map对象中


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3