我想知道是否有人可以建议我设计模式或编写以下问题的最佳方法。
1)我有一个数组列表,如下所示
list.add(new Book(title, author);
list.add(new Book(title1, author1);
等等....
2)现在我想按作者从列表中查找所有书籍
findByAuthor(String author) {
for(Book book : list){
if(book.getAuthor().equals(author)){
return book;
}
}
}
同样,我还有另一种称为 findByTitle() 的方法。但是,除了 book.getAuthor() 必须是 book.getTitle() 之外,它将是相同的代码。一切都会一样。
3)现在我可以编写一个对两种方法都通用的方法,如下所示;
findByBookProperty (String type, String propertyValue){
for(Book book : list)
if(type.equals("author") && book.getTitle().equals(propertyValue)){
return book;
} //another else if for author
//another else for another property
// if else repeats for all the required finder types...
}
}
4)我在这里遇到的问题是;1. 我不想对查找器类型使用讨厌的 if/else 条件。2. 我想知道是否有任何设计模式或更好的方法来处理这个 if else 或 swich 方法。
重要提示:我在我的 spring 控制器方法中获取作者姓名作为请求参数值。
我很欣赏你的想法。