package com.cheng.zenofdesignpatterns.extension.newpatterns.specification.userquery;
/**
* Like说明书
*/
public class UserByNameLike extends CompositeSpecification {
// like的标记
private final static String LIKE_FLAG = "%";
// 基准的like字符串
private String likeStr;
// 构造函数传递基准姓名
public UserByNameLike(String _likeStr) {
this.likeStr = _likeStr;
}
// 检验用户是否满足条件
public boolean isSatisfiedBy(User user) {
boolean result = false;
String name = user.getName();
// 替换掉%后的干净字符串
String str = likeStr.replace("%", "");
// 是以名字开头,如'国庆%'
if (likeStr.endsWith(LIKE_FLAG) && !likeStr.startsWith(LIKE_FLAG)) {
result = name.startsWith(str);
} else if (likeStr.startsWith(LIKE_FLAG) && !likeStr.endsWith(LIKE_FLAG)) { //类似 '%国庆'
result = name.endsWith(str);
} else {
result = name.contains(str); // 类似于'%国庆%'
}
return result;
}
}