java - java接口(interface)冲突

标签 java interface crud

我目前正在开发一个大项目,其中包括三种不同类型的 CRUD。我的 ICrud 界面包括 <t>当我实现它时放入所需的数据类型。

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

现在,我让 readAll 方法返回匹配的数据类型,但由于未使用而返回 null,而是创建了另一个方法 readall2(),该方法确实返回正确的数据类型,但不是我的接口(interface)的一部分。

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()

(不是驱动程序,而是接口(interface)中所有其他方法的驱动程序)

我想补充一点;起初,我在 iAdmin 中有 readAll,因为它需要 Company,但我在其他 6 个实现 ICrud 的类中也有这个 readall 方法。

感谢您的帮助。 :)

最佳答案

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

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

在正确的设计中,如果您不实现接口(interface)的方法之一(您的情况是 readAll),则根本不应该实现该接口(interface)。这意味着您正在混合关注点,并且您的界面必须分成更小的界面。也许将 readall 分成一个单独的接口(interface)可以解决您的问题。例如,创建一个单独用于写操作的接口(interface),一个用于读操作的接口(interface),一个用于 readAll 的接口(interface),而不是 ICrud。

有很多方法可以解决按原样保留接口(interface) ICrud 的问题,例如使用对象作为返回类型,或者泛型或动态。但从根本上解决你的问题是遵循我上面提到的良好设计。

关于java - java接口(interface)冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47617144/

相关文章:

java - 到底什么是 CRUD 表

c# - 将合约添加到接口(interface)实现

iphone - 如何获取 CGRect 的 x 和 y 来初始化带有框架的控件?

android - 检查记录是否存在,如果存在则更新它,否则在 PhoneGap 中创建新记录?

java - 无法读取 JSP 中的属性文件

PHP 特征公开方法和接口(interface)

amazon-dynamodb - 如何动态更新 dynamodb 项目中的属性?

java - 在 Spring Integration 中处理异常时遇到问题

java - 无法在 AWS pinpoint 上发送语音消息

java - 如何在java web服务中验证Windows用户?