我有一个 Dao 类,它实现了一些列表函数,如下所示:
class MyDaoImpl implements MyDao{
public List<Item> listItems() {...}
public Item getSpecificItem() {...}
}
我想编写一个util函数来列出和处理项目,如下所示:
class MyUtil{
public static List<ProcessedItem> processItems(MyDao myDao) {
List<Item> items = myDao.listItems();
Item specificItem = myDao.getSpecificItem();
List<ProcessedItem> processedItems = new ArrayList<>();
for (Item item : items) {
if (item.id != specificItem.id) {
processedItems.add(...);
}
}
return processedItems;
}
}
然后在我的其他课程中,我可以调用 util 函数,例如,
class ClassA{
private MyDao myDao;
public void foo(){
List<ProcessedItem> processedItems = MyUtil.processItems(myDao);
...
}
}
class ClassB{
private MyDao myDao;
public void bar(){
List<ProcessedItem> processedItems = MyUtil.processItems(myDao);
...
}
}
我想知道将 Dao 传递给静态函数是否可以。我之所以这么问,是因为我以前从未见过其他人这么做过。对于哪些参数可以传递给静态函数,是否有一些最佳实践?
如果您将其用作实用功能,那几乎没问题。但最好通过 DI(依赖注入)使用它,并确保牢记线程安全。