Java 使用接口的原因,而不是以后实现它
我的问题是:人们为什么这样做: 接口:Java 使用接口的原因,而不是以后实现它,java,jsf,jpa,Java,Jsf,Jpa,我的问题是:人们为什么这样做: 接口: public interface CarDAO { void addCar(Car car); List<Car> readAll(); void deleteCar(Long id); } 为什么不在没有接口的情况下创建carCRUDclass?因为可能有多个实现CarDAO。将在编译时或运行时选择一个 另一个原因是抽象调用方,使其不知道正在使用哪个实现。今天可能是JPA实现,明天可能是MongoDB实现。客户端不需要更改。因为可能
public interface CarDAO {
void addCar(Car car);
List<Car> readAll();
void deleteCar(Long id);
}
为什么不在没有接口的情况下创建carCRUDclass?因为可能有多个实现
CarDAO
。将在编译时或运行时选择一个
另一个原因是抽象调用方,使其不知道正在使用哪个实现。今天可能是JPA实现,明天可能是MongoDB实现。客户端不需要更改。因为可能有多个
CarDAO
的实现。将在编译时或运行时选择一个
另一个原因是抽象调用方,使其不知道正在使用哪个实现。今天可能是JPA实现,明天可能是MongoDB实现。客户端不需要更改。因为可能有多个
CarDAO
的实现。将在编译时或运行时选择一个
另一个原因是抽象调用方,使其不知道正在使用哪个实现。今天可能是JPA实现,明天可能是MongoDB实现。客户端不需要更改。因为可能有多个
CarDAO
的实现。将在编译时或运行时选择一个
另一个原因是抽象调用方,使其不知道正在使用哪个实现。今天可能是JPA实现,明天可能是MongoDB实现。客户机不需要更改。接口在任何语言中都是最有价值的,因为它允许您完全分离接口和实现 客户端处理接口;他们不需要知道事情是如何完成的 如果以后决定在新实现中进行交换,则可以在不影响客户端的情况下进行交换 如果您使用CRUD类执行此操作,则必须重写使用它的每个客户端 看看java.sql包——它都是接口。JDBC驱动程序供应商提供实现,因此您不必担心供应商。如果交换数据库,只需在类路径中放置一个新的JAR。所有处理接口的代码仍然有效 另一个很好的例子是java.util集合API。您应该更喜欢java.util.List接口。它背后是ArrayList还是LinkedList对你的客户来说都无关紧要
这是动态代理生成、面向方面编程、模拟等的基础。除非你理解如何使用接口,否则你不能把自己看作是面向对象的开发人员。 接口在任何语言中都是最有价值的,因为你可以完全分离接口和实现。 客户端处理接口;他们不需要知道事情是如何完成的 如果以后决定在新实现中进行交换,则可以在不影响客户端的情况下进行交换 如果您使用CRUD类执行此操作,则必须重写使用它的每个客户端 看看java.sql包——它都是接口。JDBC驱动程序供应商提供实现,因此您不必担心供应商。如果交换数据库,只需在类路径中放置一个新的JAR。所有处理接口的代码仍然有效 另一个很好的例子是java.util集合API。您应该更喜欢java.util.List接口。它背后是ArrayList还是LinkedList对你的客户来说都无关紧要
这是动态代理生成、面向方面编程、模拟等的基础。除非你理解如何使用接口,否则你不能把自己看作是面向对象的开发人员。 接口在任何语言中都是最有价值的,因为你可以完全分离接口和实现。 客户端处理接口;他们不需要知道事情是如何完成的 如果以后决定在新实现中进行交换,则可以在不影响客户端的情况下进行交换 如果您使用CRUD类执行此操作,则必须重写使用它的每个客户端 看看java.sql包——它都是接口。JDBC驱动程序供应商提供实现,因此您不必担心供应商。如果交换数据库,只需在类路径中放置一个新的JAR。所有处理接口的代码仍然有效 另一个很好的例子是java.util集合API。您应该更喜欢java.util.List接口。它背后是ArrayList还是LinkedList对你的客户来说都无关紧要
这是动态代理生成、面向方面编程、模拟等的基础。除非你理解如何使用接口,否则你不能把自己看作是面向对象的开发人员。 接口在任何语言中都是最有价值的,因为你可以完全分离接口和实现。 客户端处理接口;他们不需要知道事情是如何完成的 如果以后决定在新实现中进行交换,则可以在不影响客户端的情况下进行交换 如果您使用CRUD类执行此操作,则必须重写使用它的每个客户端 看看java.sql包——它都是接口。JDBC驱动程序供应商提供实现,因此您不必担心供应商。如果交换数据库,只需在类路径中放置一个新的JAR。所有处理接口的代码仍然有效 另一个很好的例子是java.util集合API。您应该更喜欢java.util.List接口。它背后是ArrayList还是LinkedList对你的客户来说都无关紧要
这是动态代理生成、面向方面编程、模拟等的基础。除非你懂得如何正确使用接口,否则你不能把自己看作是面向对象的开发者。
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
}