【发布时间】:2024-01-22 20:30:01
【问题描述】:
我的应用中有 3 个classes:
1. Runner / Main(调用服务类)
2。服务类(执行业务逻辑)
3.存储库类(由服务调用以进行数据库查询)
我不确定在服务类中实现变量的最佳方式。以下 2 种方法中哪种方法最好?为什么?
例如我应该有实例变量:
public class DogService{
List<Dogs> dogList= new ArrayList<Dog>(); //instance var
public DogService(){}
public List<dogs> getAllDogs(){
dogList=dogRepository.getAll();
return dogList;
}
}
或方法中的局部变量:
public class DogService{
public DogService(){}
public List<dogs> getAllDogs(){
List<Dogs> dogList= new ArrayList<Dog>(); //local var to method
dogList=dogRepository.getAll();
return dogList;
}
}
服务类使用示例:
public class Runner {
List<Dogs> listOfAllDogs = new ArrayList<Dog>();
DogService dogService = new DogService();
public static void main(String[] args) {
listOfAllDogs = dogService.getAllDogs();
}
【问题讨论】:
-
这里没有区别。无论何时调用
getAllDogs,该变量都会被覆盖。使用局部变量,直到有理由反对它。 -
好的,那我为什么要使用本地变量呢?在什么情况下我会使用实例变量?
-
老实说,这个问题没有实际意义,因为服务层没有提供任何额外的好处。最好只向您的存储库询问狗列表,除非您有服务层应该对该列表执行的操作?另外,请干净地格式化代码!有帮助!
-
我确实有其他利用数据的方法,我只是将其作为一个简单的示例。你能推荐使用哪种 var 类型吗?
-
根据程序的功能,最好以单例模式实现
dogList。
标签: java scope instance-variables local-variables