標籤:style blog http java ar 2014 log on c
通過引用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() {}@Overridepublic int getGroupId() {return 9999999;}@Overridepublic 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){//擷取groupIdint groupId=user.getGroup().getGroupId();//doing something}}
設計模式之Null 物件(Null Object)模式