接口冲突java

时间:2017-12-03 09:42:14

标签: java interface crud

我目前正在开发一个包含三种不同类型CRUD的大项目。我的ICrud接口包含<t>,以便在实现它时输入所需的数据类型。

我的问题是,当我在第三个类中实现它时,我希望使其中一个方法(readAll)使用另一个数据类型而不是其他4个方法(CRUD)。这有可能吗?

现在我有readAll方法返回匹配的数据类型但返回null因为它没有被使用,而是创建了另一个方法readall2(),它返回正确的数据类型但不是我的一部分接口

ICrud界面:

public interface ICrud<T>  {

List<T> readAll();

List<T> read(int cvr);

void create(T t);

void delete(int cvr);

void update(T t, int id);
}

我如何实现它:

@Service
public class AdminRepository implements Ilogin<Admin>, ICrud<Driver>, 
IAdmin<Company> 

我希望如何使用readAll:

public List<Company> readAll()

(不是驱动程序,而是界面中所有其他方法的驱动程序)

我想补充一下;起初,我在iAdmin中有readAll,因为它需要公司,但我在其他6个类中使用了readall方法来实现ICrud。

感谢您的帮助。 :)

1 个答案:

答案 0 :(得分:1)

您遇到设计问题,我建议您阅读以下链接中的SOLID原则:

https://scotch.io/bar-talk/s-o-l-i-d-the-first-five-principles-of-object-oriented-design

在正确的设计中,如果您不实现其中一种方法(在您的情况下为readAll),则不应该实现接口。这意味着您正在混淆问题,您的界面必须拆分为更小的界面。也许将readall分成单独的接口将解决您的问题。例如,代替ICrud,仅为写操作创建一个接口,一个用于读操作,一个用于readAll。

有许多方法可以解决您的问题,保留接口ICrud,例如使用对象作为retrun类型,或泛型或动态。但正如我上面提到的那样,从根本上解决你的问题的是一个好的设计。