特例模式与空对象模式

特例模式指的是为处理某些特殊情况而创建的特殊类或对象。这些类或对象专门用于处理特定的异常情况或边界条件,以便简化主业务逻辑的处理。
应用场景:用于需要处理某些特殊输入、边界条件或错误情况的场景。
例如,处理数据库查询时,返回一个特例对象表示没有找到数据。

空对象模式通过提供一个行为为空的对象来替代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();
    }
}

posted @   狗狗没有坏心眼  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示