特例模式指的是为处理某些特殊情况而创建的特殊类或对象。这些类或对象专门用于处理特定的异常情况或边界条件,以便简化主业务逻辑的处理。
应用场景:用于需要处理某些特殊输入、边界条件或错误情况的场景。
例如,处理数据库查询时,返回一个特例对象表示没有找到数据。
空对象模式通过提供一个行为为空的对象来替代null,以避免对null进行检查,从而简化代码。
应用场景:用于需要频繁处理null值的场景,通过使用空对象避免了多余的null检查。
例如,一个集合中可能会包含null元素,通过使用空对象代替null,可以简化集合操作。
特例模式示例
//修改前
ProjectEntity project = getById(projectId);
if (Objects.isNull(project)) {
return Result.error(AppHttpCodeEnum.PROJECT_IS_NOT_EXIST);
}
//修改后
ProjectEntity project = getByIdOrDefault(projectId, new NullProjectEntity());
// 特例模式实现: NullProjectEntity
public class NullProjectEntity extends ProjectEntity {
@Override
public boolean isNull() {
return true;
}
// 覆盖其他必要的方法,返回默认值或空行为
}
// 通用方法获取项目,如果不存在则返回默认项目
private ProjectEntity getByIdOrDefault(Long projectId, ProjectEntity defaultProject) {
ProjectEntity project = getById(projectId);
return project != null ? project : defaultProject;
}
// 项目实体类
public class ProjectEntity {
public boolean isNull() {
return false;
}
// 其他方法和属性
}
空对象模式示例
//修改前
list<Employee> employees = getEmployee();
if(employees != null){
for(Employee e : employees){
totalPay += e.getPay();
}
}
//修改后
list<Employee> employees = getEmployee();
for(Employee e : employees){
totalPay += e.getPay();
}
//如果为空返回空列表
public List<Employee> getEmployee(){
if(//如果 employees 为空){
return Collections.emptyList();
}
}
标签:特例,return,对象,employees,模式,project,ProjectEntity,null,public
From: https://www.cnblogs.com/zhao-zong-yu-hai/p/18306782