gpt4 book ai didi

java - 使用接口(interface)而不是稍后实现它的原因

转载 作者:行者123 更新时间:2023-12-01 23:11:27 25 4
gpt4 key购买 nike

我的问题只是:为什么人们这样做:

界面:

public interface CarDAO {

void addCar(Car car);

List<Car> readAll();

void deleteCar(Long id);

}

创建一个实现 carDAO 的类

    public class CarDAOImpl implements CarDAO {

private SessionFactory sessionFactory;

private Session getCurrentSession(){

return sessionFactory.getCurrentSession();

}

public void addCar(Car car) {

all the code to add the car
}
public void deleteCar(Car car) {

all the code to delete the car
}

为什么不直接创建一个没有接口(interface)的 carCRUD 类?

最佳答案

接口(interface)在任何语言中都是最有值(value)的,因为它可以让你完全分离接口(interface)和实现。

客户端处理接口(interface);他们不需要知道某事是如何完成的。

如果您决定稍后换入新的实现,则可以在不影响客户端的情况下完成此操作。

如果您使用 CRUD 类来执行此操作,则必须重写每个使用它的客户端。

查看 java.sql 包 - 都是接口(interface)。 JDBC 驱动程序供应商提供了实现,因此您不必担心供应商。如果交换数据库,只需将新的 JAR 放入 CLASSPATH 中即可。所有处理接口(interface)的代码仍然有效。

另一个很好的例子是 java.util Collections API。您应该更喜欢 java.util.List 接口(interface)。无论它后面是 ArrayList 还是 LinkedList 对于你的客户来说并不重要。

这是动态代理生成、面向方面编程、模拟以及各种东西的基础。除非您了解如何很好地使用接口(interface),否则您不能认为自己是面向对象的开发人员。

关于java - 使用接口(interface)而不是稍后实现它的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21888318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com