java - Spring服务接口的实现类需要不同的方法签名
问题描述
我不知道这个问题属于这里还是softwareengineering.stackexchange。我有一个名为汽车的服务:
public interface CarSerivce{ Car create(String model);}
现在我想拥有两个能力,创建和创建随机。创建随机汽车不需要模型,服务应选择一个可用的随机模型。如此有效地,这可能是实现:
@Service
public class CarServiceImpl implements CarService{
public Car create(String name){...}
}
//This one cannot implement the interface
@Service
public class RandomCarServiceImpl{ public Car create(){...}}
一种解决方案是通过使用服务的类外部化创建随机名称并将其传递给服务。但这不是一种选择,因为这个例子是人为的,真实的例子需要一个相当复杂的随机生成算法来处理许多参数,而不仅仅是一个。我的第二个想法是使用两个方法创建一个实现,create(String name) 和 createRandom()(或者只是一个不带参数的重载创建)。这很好用,这样我可以将所有创建代码放在 create 方法中并从 createRandom 方法中调用它。因为它是关于选择策略(就像策略设计模式一样),所以我想知道是否有更好的解决方案。
解决方案
推荐阅读
- angular - ngx-extended-pdf-viewer 从 Angular 8 中的 url 中删除哈希
- rust - 我如何 fork/exec 一个在 Rust 中转发所有参数的进程?
- reactjs - 基于变体将嵌入式样式应用于 MUI 组件
- python - Gurobi - 解决容量定位问题
- dart - 如何使用 puppeteer 访问导航栏中的下拉菜单?
- reactjs - React js 嵌套组件/SearchBar 组件在 Header 中
- amazon-web-services - AWS javascript sdk 队列预置 ResourceNotFound 异常
- r - 创建一个函数来获取 europmc 文献以跳过不返回表格的纸张
- react-native - React Navigation:如何在 Stack Navigator 中伪造历史记录?
- sql-server - SQL Server - 如何将来源与正确的目的地/日期联系起来?