首页 > 其他分享 >特例模式与空对象模式

特例模式与空对象模式

时间:2024-07-17 11:53:59浏览次数:14  
标签:特例 return 对象 employees 模式 project ProjectEntity null public

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

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

相关文章

  • 《分析模式》漫谈10-白头神探
    100:00:01,120-->00:00:05,320前言里面,就紧接着昨天的视频200:00:05,880-->00:00:07,110紧接着上一个视频300:00:08,050-->00:00:09,490下来就有这么一段话400:00:09,500-->00:00:11,710他说theappendixis500:00:11,720-->00:00:12,590notdesigned......
  • 设计模式之工厂模式(学习笔记)
    定义工厂方法模式是一种创建型设计模式,它定义了一个用于创建对象的接口,但由子类来决定实例化哪一个类。工厂方法使得类的实例化延迟到子类,这样可以让客户端在不需要知道具体类的情况下创建对象。工厂方法模式通过使用继承和多态性,允许子类来控制对象的创建方式,能够更好地应对对象......
  • 设计模式-C#实现简单工厂模式
    前言上一篇文章写了如何使用RabbitMQ做个简单的发送邮件项目,然后评论也是比较多,也是准备去学习一下如何确保RabbitMQ的消息可靠性,但是由于时间原因,先来说说设计模式中的简单工厂模式吧!在了解简单工厂模式之前,我们要知道C#是一款面向对象的高级程序语言。它有3大特性,封装、继承、......
  • C++ 多态:探索对象的动态行为
    C++多态:探索对象的动态行为在C++中,多态性是一种强大的特性,它允许我们通过基类指针或引用来调用派生类的方法。多态性不仅增加了程序的灵活性,还使得代码更加易于扩展和维护。本文将深入探讨C++中的多态性,包括静态多态(主要通过函数重载和模板实现)和动态多态(主要通过虚函数......
  • 装饰器模式
    装饰器模式(DecoratorPattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。装饰器模式通过将对象包装在装饰器类中,以便动态地修改其行为。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完......
  • Python进阶(1)--面向对象
    文章目录面向对象类的定义类的构造实例化一个类三大特点封装私有属性继承和多态继承继承的作用多态总结总结面向对象Python是一种广泛使用的解释型、高级编程、通用型编程语言,它以其简洁、易读以及面向对象的特性而闻名。面向对象编程(Object-OrientedProgramm......
  • BeautifulSoup模块之初识,BeautifulSoup模块之四种对象,BeautifulSoup模块之文档树操
    ⅠBeautifulSoup模块之初识【一】介绍【1】简言简单来说,BeautifulSoup是python的一个库最主要的功能是从网页抓取数据。【2】官方解释BeautifulSoup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要......
  • 设计模式之简单工厂模式(学习笔记)
    定义简单工厂模式(SimpleFactoryPattern)是一种创建型设计模式,它定义一个用于创建对象的接口,但由一个单独的类来实现实际创建的工作。简单工厂模式通过在一个类中集中管理对象的创建过程,可以减少客户端与具体类之间的耦合,使得代码结构更加清晰和易于维护。通过专门定义一个类来负......
  • 十天学会Python——第6天:面向对象
    1面向对象1.1类和对象(用类创建对象)类的语法:class类名():执行的代码对象的语法:对象名=类名()classWasher(): #定义类defwash(self): print("可以洗衣服")print(self) #返回结果是跟下面gree的地址一样gree1=Washer()......
  • 【wyTest自动化测试】快照校验模式的创新实践
    本文将以遥遥领先的【华为商城】web端自动化为例,进行测试脚本开发的讲解。仅用于教学指导使用,如有侵权,请联系我删除。一、测试脚本结构        按照教程惯例,开篇先展示一下测试脚本的标准结构模版:case_xx特性_xx001.pyclassCaseTest:testAbout="""****......