1、设计
状态支持,继承该类则具有以下功能:设置状态为“未初始化”、设置状态为“初始化中”、设置状态SEI“初始化完毕”,判断对象是否可用,则需要调isAvailable()
package spzc.platform.model;
/**
* 状态支持,继承该类则具有以下功能:设置状态为“未初始化”、设置状态为“初始化中”、设置状态SEI“初始化完毕”,判断对象是否可用,则需要调available()
* @author live
* Jan 7, 2019 6:56:39 PM
*/
abstract public class StatusSupport {
private static final String STATUS_UNINITIALIZED = "uninitialized";// 状态,未初始化
private static final String STATUS_ININIALIZING = "ininializing";// 初始化中
private static final String STATUS_INITIALIZED = "initialized";// 初始化完毕
private String status = STATUS_UNINITIALIZED;
protected boolean available = false;
public String getStatus() {
return status;
}
protected void setUninitialized() {
setStatus(STATUS_UNINITIALIZED);
}
protected void setIninializing() {
setStatus(STATUS_ININIALIZING);
}
protected void setInitialized() {
setStatus(STATUS_INITIALIZED);
}
protected void setStatus(String status) {
this.status = status;
if (!STATUS_INITIALIZED.equals(this.getStatus())) {
this.setAvailable(false);
} else {
this.setAvailable(false);
}
}
public boolean isAvailable() {
return available;
}
protected void setAvailable(boolean available) {
this.available = available;
}
}
2、使用示例:
package spzc.platform.model.domain;
import core.data.entity.Entity;
import spzc.platform.model.StatusSupport;
import spzc.platform.model.role.RoleManager;
import spzc.platform.model.user.UserManager;
/**
* 域
*
* @author live
* @date Dec 18, 2018 3:46:46 PM
*/
public class Domain extends StatusSupport{
private UserManager userManager;
private RoleManager roleManager;
private String id;
private String name;
public Domain() {
setUninitialized();
this.userManager = new UserManager();
this.roleManager = new RoleManager();
}
public Domain(String domainName) {
setIninializing();
this.userManager = new UserManager(domainName);
this.roleManager = new RoleManager(domainName);
setInitialized();
}
// TODO 待补充
public Domain(Entity entity) {
this();
this.setId(entity.get_Id());
this.setName(entity.getValue("name", String.class));
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public UserManager getUserManager() {
return userManager;
}
public void setUserManager(UserManager userManager) {
this.userManager = userManager;
}
public RoleManager getRoleManager() {
return roleManager;
}
public void setRoleManager(RoleManager roleManager) {
this.roleManager = roleManager;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean isAvailable() {
return super.isAvailable() && this.getRoleManager().isAvailable() && this.getUserManager().isAvailable();
}
}