Null Object在C++中如何比较优美地实现
看了那本Agile Software Development Principles Patterns,and Practices,其中提出了一个Null Object Pattern,也就是说,NULL被包装成对象,在一些函数上可以有一个NULL Object应有的表现.但是它的实现是利用了Java的语言特性,无法直接移植到C++.
我最初有个考虑是将Base类直接改写成一个Null对象.但是这样作似乎违反了传统习惯,并且使抽象类的功能不再专一.
我的问题是,在继承树上,他应该在那个位置上比较合适?怎么样对其进行利用?不要违反了Single Responsibility Principle和Is-a语意.
相关的Java代码:
[JAVA]
import java.util.Date;
public interface Employee
{
public boolean isTimeToPay(Date payDate);
public void pay();
public static final Employee NULL=new Employee()
{
public boolean isTimeToPay(Date payDate);
{
return false;
}
public void pay()
{
}
};
}
[/JAVA]