This question already has answers here:
Why would I want to use Interfaces? [closed]
                                
                                    (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对您的客户来说都无关紧要。

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

07-24 09:52
查看更多