package com.monkeyk.os.domain;
import com.monkeyk.os.infrastructure.DateUtils;
import java.io.Serializable;
import java.util.Date;
/**
* 使用DDD(领域驱动设计)模式中, 定义抽象的Domain,
* 包括公共的基础属性
*
* @author Shengzhao Li
*/
public abstract class AbstractDomain implements Serializable {
private static final long serialVersionUID = 7787898374385773471L;
/**
* The domain create time.
*/
protected Date createTime = DateUtils.now();
/**
* Domain的业务id
*/
protected String guid;
public AbstractDomain() {
}
public String guid() {
return guid;
}
@SuppressWarnings("unchecked")
public <T extends AbstractDomain> T guid(String guid) {
this.guid = guid;
return (T) this;
}
public Date createTime() {
return createTime;
}
@SuppressWarnings("unchecked")
public <T extends AbstractDomain> T createTime(Date createTime) {
this.createTime = createTime;
return (T) this;
}
@Override
public String toString() {
return "{" +
"createTime=" + createTime +
", guid='" + guid + '\'' +
'}';
}
}