您的位置:首页 > 移动开发 > Objective-C

Null Object 模式

2012-11-26 17:27 148 查看
NULL OBJECT看着这个名字应该有一个笼统的印象了。翻译成中文就是“空对象”。提供一个对象给指定的类型,用以代替这个对象为空的情况。 Null Object提供了“什么也不做”的行为,隐藏来自它的合作者的细节

那在FrameWork中有这样的设计模式吗?答案是肯定的,比如:String.Empty,Decimal.Zero等
以下是简单例子:

public interface Employee{

public void pay();

public boolean isTimeToPay(DateTime payDate);

public static final Employee NULL = new Employee(){

public boolean isTimeToPay(DateTime payDate){

return false;

}

public void pay(){

}

};

}

public class DB{

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

static {

EmployMap.put("Wilson", 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 {

public Override void pay() {

DebugLog.log("payed");

}

public Override 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();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: