zoukankan      html  css  js  c++  java
  • Null Object 模式

    作为java程序员,最讨厌的莫过于解决无穷无尽的nullpointexception.其实利用null object模式优雅的解决这个问题:

    public interface Employee{

    public void pay(); 

    public boolean isTimeToPay(Date payDate);

    public static final Employee NULL = new Employee(){

    public boolean isTimeToPay(Date payDate){

    return false;

    }

    public void pay(){

            

            }

    };

    }

    public class DB{

    private static Map<String,Employee> EmployMap= new HashMap<String,Employee>();

    static {

    EmployMap.put("jeff", new EmployImp());

    }

        public static Employee getEmployee(String name){  

        Employee e = EmployMap.get(name);

            if(e == null)  

                return Employee.NULL;  

            return e;  

        }  

    }  

     
     
    public class EmployImp implements Employee {
     
    @Override
    public void pay() {
               DebugLog.log("payed");
    }
     
    @Override
    public boolean isTimeToPay(Date payDate) {
    return true;
    }
     
    }
     
     
    public class Test {
     
    public static void main(String[] args) {
    Employee e = DB.getEmployee("xxxx");
    Date today =new Date();
    if(e.isTimeToPay(today))  
       e.pay();  
    }
       
    public void testPay()
    {
    Employee e = DB.getEmployee("Bob");
    Date today =new Date();
    if(e != null && e.isTimeToPay(today))  
       e.pay();  
    }
    }
     
    Employ 从db里面拿出相应的employ,按照以前的代码在使用具体方法之前
    需要加上相应的判断,各位看官完全可以使用null object pattern优雅的解决
    这个问题
  • 相关阅读:
    poj 1068 Parencodings
    1022. Digital Library (30)
    Android多线程断点续传下载
    Android开源项目分类汇总
    AWR--service statistics
    xml:Invalid byte 2 of 2-byte UTF-8 sequence
    mysql学习之二:mysql基本使用方法
    Codeforces Round #309 (Div. 2) C. Kyoya and Colored Balls
    startActivities的使用
    吉布斯采样 Gibbs Sampling
  • 原文地址:https://www.cnblogs.com/budoudou/p/2299833.html
Copyright © 2011-2022 走看看