通过引用Null Object,用于取消业务逻辑中对对象的为空推断
类图:
Nullable:
package com.demo.user; public interface Nullable {
boolean isNull();
}
Group:
package com.demo.user; public class Group implements Nullable{
private int groupId;
private String groupName;
public int getGroupId() {
return groupId;
}
public void setGroupId(int groupId) {
this.groupId = groupId;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public boolean isNull() {
return true;
} }
NullGroup:
package com.demo.user; public class NullGroup extends Group { private NullGroup() {
} @Override
public int getGroupId() {
return 9999999;
}
@Override
public boolean isNull() {
return false;
}
static Group createNull(){
return new NullGroup();
}
}
User:
package com.demo.user; public class User {
private int userId ;
private String userName;
private Group group; public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Group getGroup() {
//推断返回一个NullGroup对象
return group==null?NullGroup.createNull():group;
}
public void setGroup(Group group) {
this.group = group;
} }
UserService:
package com.demo.user; public class UserService {
public void add(User user){
//获取groupId
int groupId=user.getGroup().getGroupId();
//doing something
}
}