This question already has answers here:
Why would I want to use Interfaces? [closed]
(19个回答)
6年前关闭。
我的问题是:为什么人们这样做:
接口:
而不是创建实现carDAO的类
为什么不创建没有接口的carCRUDclass?
(19个回答)
6年前关闭。
我的问题是:为什么人们这样做:
接口:
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
}
为什么不创建没有接口的carCRUDclass?
最佳答案
接口在任何语言中都是最有价值的,因为它使您可以完全分离接口和实现。
客户处理接口;他们不需要知道如何做。
如果您决定稍后交换新的实现,则可以在不影响客户端的情况下进行交换。
如果使用CRUD类执行此操作,则必须重写每个使用它的客户端。
看一下java.sql包-它是所有接口。 JDBC驱动程序供应商提供了实现,因此您不必担心供应商。如果交换数据库,只需在CLASSPATH中放入一个新的JAR。您处理接口的所有代码仍然有效。
另一个很棒的例子是java.util Collections API。您应该首选接口java.util.List。它的后面是ArrayList还是LinkedList对您的客户来说都无关紧要。
这是动态代理生成,面向方面的编程,模拟以及各种内容的基础。除非您了解如何很好地使用接口,否则您不能认为自己是面向对象的开发人员。