我的问题只是:为什么人们这样做:
界面:
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/