设计模式:空对象模式

版权声明:本文为博主原创文章,未经博主允许不得转载。有问题可以留言或者邮箱shusheng52@126邮箱联系 https://blog.csdn.net/xiaoshusheng10/article/details/87820310

设计模式:空对象模式

  • 空对象模式简介:一个空对象取代null对象实例的检查,null对象不是检查空值,而是反应一个不做任何动作的关系。这样的null对象也可以在数据不可用的时候提供默认的行为
  • 空对象模式成分:
    1. 对象抽象类
      package com.fg.java.nullobject;
      
      public abstract class AbstractCustomer {
          protected String name;
          public abstract boolean isNil();
          public abstract String getName();
      }
      
    2. 真实对象实现类:
      package com.fg.java.nullobject;
      
      public class RealCustomer extends AbstractCustomer {
          public RealCustomer(String name){
              this.name = name;
          }
      
          @Override
          public boolean isNil() {
              return false;
          }
      
          @Override
          public String getName() {
              return name;
          }
      }
      
    3. 空对象实现类:提供一个默认的行为,避免null的校验。
      package com.fg.java.nullobject;
      
      public class NullCustomer extends AbstractCustomer {
          @Override
          public boolean isNil() {
              return true;
          }
      
          @Override
          public String getName() {
              return  "not Available in Customer database";
          }
      }
      
    4. 工厂模式:判断是创建真实对象还是空对象。
      package com.fg.java.nullobject;
      
      public class CustomerFactory {
          public static final String[] names = {"Rob","joe","Julie"};
          public static AbstractCustomer  getCustomer(String name){
              for(int i=0;i<names.length;i++){
                  if(names[i].equalsIgnoreCase(name)){
                      return new RealCustomer(name);
                  }
              }
              return new NullCustomer();
          }
      }
      

 

当我们知道自己需要的范围,超过范围提供统一的行为的时候,可以试试空对象模式,会给你不一样的惊喜。

猜你喜欢

转载自blog.csdn.net/xiaoshusheng10/article/details/87820310