特例模式与空对象模式
特例模式指的是为处理某些特殊情况而创建的特殊类或对象。这些类或对象专门用于处理特定的异常情况或边界条件,以便简化主业务逻辑的处理。
应用场景:用于需要处理某些特殊输入、边界条件或错误情况的场景。
例如,处理数据库查询时,返回一个特例对象表示没有找到数据。
空对象模式通过提供一个行为为空的对象来替代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();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗