星空网 > 软件开发 > ASP.net

空对象模式

  在开发业务层数据的时候,我总是担心数据层给我返回的对象实例为null。

空对象模式

  所以,每次使用数据层返回的对象实例我都要判断下是否为null

 UserRepository respository = new UserRepository(); var user = respository.GetById("008"); if (user!=null) {   user.SayHello(); }

   虽然这样是避免了因为空值引发异常的问题,但是这样增加了客户端代码的很多工作量,而且一旦某个地方忘记判断,我的代码就会出现空异常;为了解决这个问题,我们引入了空对象模式,将空对象扼杀在数据的源头

  public interface IUser  {    void SayHello();  }

  public class User : IUser  {    public string Id { get; private set; }    public User(string id)    {      Id = id;    }    public void SayHello()    {      Console.WriteLine("{0}:Hello", Id);    }  }

  public class NullUser : IUser  {    public void SayHello()    {      //对于空对象实例来说,它的任何方法都应该不用做任何处理    }  }

  public class UserRepository  {    private ICollection<User> users;    public UserRepository()    {      users = new List<User>() {        new User("001"),        new User("002"),        new User("003"),        new User("004"),        new User("005")      };    }    public IUser GetById(string userId)    {      IUser user = users.SingleOrDefault(s => s.Id == userId);      if (user == null)//检查User的实例是否为null,如果是返回一个特殊的Iuser      {        user = new NullUser();      }      return user;    }  }

  在上面的代码中,我们在数据层中直接就判断了user实例是不是为null,如果为null,就返回一个用作null值处理的对象实例

 static void Main(string[] args) {   UserRepository respository = new UserRepository();   var user = respository.GetById("008");   user.SayHello();   user = respository.GetById("003");   user.SayHello();   Console.ReadLine(); }

  现在妈妈再也不用担心我调用数据层的对象实例报空引用了,当然这种方式并不仅限于在数据层使用

空对象模式

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

还不知道如何注册P卡?P卡注册教程实操详解!:https://www.ikjzd.com/articles/111409
2020创业做外贸如何选品,如何获得供应商支持?:https://www.ikjzd.com/articles/111410
越南快速增长的电商市场发展前景可观:https://www.ikjzd.com/articles/111411
2019年终旺季卖什么?推荐10个潜力爆款!:https://www.ikjzd.com/articles/111412
忙完黑五,十二月运营的准备工作做了吗?:https://www.ikjzd.com/articles/111413
外贸必修课!你的老客户为什么都想转单了?:https://www.ikjzd.com/articles/111414
大件卖家看这里!直达货源,选品快捷,独家干货限时分享:https://www.kjdsnews.com/a/1842243.html
德国消费者购物习惯研究:网购退货率达11%:https://www.kjdsnews.com/a/1842244.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流