首页 > 解决方案 > 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 方法中调用它。因为它是关于选择策略(就像策略设计模式一样),所以我想知道是否有更好的解决方案。

标签: javaspringstrategy-patterninterface-implementation

解决方案


推荐阅读