Netease - Jiang Wenkang
DDD是一种应对复杂需要的软件开发方法,通过核心业务模型的不断演化来实现。
三段式开发流程的弊端
表现特征
DDD带来的好处
表现特征
How ?
How ?
举个例子:
1.访问控制系统的核心是权限
2.仓库系统的核心是库存
...
特点
好处
public class OldPushService {
public void push(String message, long phone) {
//检查phone的合法性
Op op = check(phone);
if (op == Op.Mobile) {
//发送到移动网关
} else if (op == Op.Union) {
//发送到联通的网关
}else{
//error
}
}
Op check(long phone) {
if (phone / 100000000 == 184) {
return Op.Mobile;
}
if (phone / 100000000 == 133) {
return Op.Union;
}
return Op.UNKNOWN;
}
enum Op {
Mobile,
Union,
UNKNOWN
}
}
public class NewPushService {
public void push(String message, PhoneNumber phoneNumber) {
if (phoneNumber.isMobile()) {
//发送到移动网关
} else if (phoneNumber.isUnion()) {
//发送到联通的网关
} else {
//error
}
}
}
public class PhoneNumber implements ValueObject<PhoneNumber> {
private long code;
public PhoneNumber(long code) {
//验证号码的合法性
this.code = code;
}
//是否为中国移动号码
public boolean isMobile() {
return code / 1000000000 == 184;
}
//是否为中国联通号码
public boolean isUnion() {
return code / 1000000000 == 133;
}
public long code() {
return this.code;
}
@Override
public boolean isSame(PhoneNumber other) {
return other != null && code == other.code;
}
}
注意!