OpenJDK源码研究笔记(十四):三种经典的设计方法,接口,接口-抽象类-具体实现类,接口-具体实现类
2013-11-08 00:04
567 查看
在研究OpenJDK源码过程中,我发现常用的设计方法就是2种:接口,接口-抽象类-具体实现类 。
在一些其它开源框架和业务开发中,经常存在着第3种设计,接口-具体实现类。
1.只有接口,没有实现类。
定义接口,制定标准。
在Java中,这个最典型的案例是JDBC的API的设计。
Connection、Statement、PreparedStatement、CallableStatement、ResultSet等都是接口,没有任何实现方法。
这些接口就是一个标准,具体的实现,都是由数据库厂商自行实现。
2.接口-抽象类-具体实现类。
定义接口,确定系统架构。
通过抽象实现接口,实现复用。
通过具体实现类,提供面向用户的API。
在Java中,这个最典型的案例是集合框架I的设计。
定义Collection、List、Set、Map接口,然后有AbstractCollection、AbstractList、AbstractMap、AbstractSet等抽象实现,具体实现类ArrayList、LinkedList、LinkedHashSet、HashMap等,是在抽象类的基础上的具体实现。
第三方,如果需要实现自定义的集合,可以单独实现接口,或者继承抽象类和具体实现类来实现,从而扩展JDK自带的集合功能。
当然,第三方,也可以完全自定义自己的集合框架。
3.接口-具体实现类。
有接口和具体实现类,没有抽象类的情况,在OpenJDK源码中比较少见。
但是我们在实际开发中,有时会没有接口的抽象实现。
比如Java Web开发中,我们根据业务逻辑定义了系统的一些接口,比如系统内部的CRUD接口,系统之间的通信接口,我们完全可以根据需要,直接实现接口即可。
没有抽象类,通常是只需要一个具体实现。
或者,一个接口的通信双方,各自有自己的一套实现方式。
小结
常用的设计方法,就那么多。掌握那些经典的常见的方法,其它设计方法就很容易理解了。
接口、抽象类、实现类、设计模式,诸如此类,最终还是归结到面向对象。
在实践中,加深对面向对象的理解,诸如设计模式、设计方法等很多高级货,自然就理解了。
相关阅读
我的CSDN博客专栏 OpenJDK源码研究笔记
OpenJDK源码研究过程中整理的学习笔记。 OpenJDK是GPL许可(GPL-licensed)的Java平台的开源实现。
原文参见:http://FansUnion.cn/articles/3107(小雷网-FansUnion.cn)
在一些其它开源框架和业务开发中,经常存在着第3种设计,接口-具体实现类。
1.只有接口,没有实现类。
定义接口,制定标准。
在Java中,这个最典型的案例是JDBC的API的设计。
Connection、Statement、PreparedStatement、CallableStatement、ResultSet等都是接口,没有任何实现方法。
这些接口就是一个标准,具体的实现,都是由数据库厂商自行实现。
2.接口-抽象类-具体实现类。
定义接口,确定系统架构。
通过抽象实现接口,实现复用。
通过具体实现类,提供面向用户的API。
在Java中,这个最典型的案例是集合框架I的设计。
定义Collection、List、Set、Map接口,然后有AbstractCollection、AbstractList、AbstractMap、AbstractSet等抽象实现,具体实现类ArrayList、LinkedList、LinkedHashSet、HashMap等,是在抽象类的基础上的具体实现。
第三方,如果需要实现自定义的集合,可以单独实现接口,或者继承抽象类和具体实现类来实现,从而扩展JDK自带的集合功能。
当然,第三方,也可以完全自定义自己的集合框架。
3.接口-具体实现类。
有接口和具体实现类,没有抽象类的情况,在OpenJDK源码中比较少见。
但是我们在实际开发中,有时会没有接口的抽象实现。
比如Java Web开发中,我们根据业务逻辑定义了系统的一些接口,比如系统内部的CRUD接口,系统之间的通信接口,我们完全可以根据需要,直接实现接口即可。
没有抽象类,通常是只需要一个具体实现。
或者,一个接口的通信双方,各自有自己的一套实现方式。
小结
常用的设计方法,就那么多。掌握那些经典的常见的方法,其它设计方法就很容易理解了。
接口、抽象类、实现类、设计模式,诸如此类,最终还是归结到面向对象。
在实践中,加深对面向对象的理解,诸如设计模式、设计方法等很多高级货,自然就理解了。
相关阅读
我的CSDN博客专栏 OpenJDK源码研究笔记
OpenJDK源码研究过程中整理的学习笔记。 OpenJDK是GPL许可(GPL-licensed)的Java平台的开源实现。
原文参见:http://FansUnion.cn/articles/3107(小雷网-FansUnion.cn)
相关文章推荐
- OpenJDK源码研究笔记(十四):三种经典的设计方法,接口,接口-抽象类-具体实现类,接口-具体实现类
- OpenJDK源码研究笔记(十四):三种经典的设计方法,接口,接口-抽象类-具体实现类,接口-具体实现类
- OpenJDK源码研究笔记(十四):三种经典的设计方法,接口,接口-抽象类-具体实现类,接口-具体实现类
- OpenJDK源码研究笔记(十):枚举的高级用法,枚举实现接口,竟是别有洞天
- OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)
- OpenJDK源码研究笔记(十):枚举的高级用法,枚举实现接口,竟是别有洞天
- OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)
- OpenJDK源码研究笔记(十):枚举的高级用法,枚举实现接口,竟是别有洞天
- OpenJDK源码研究笔记(十):枚举的高级用法,枚举实现接口,竟是别有洞天
- OpenJDK源码研究笔记(十):枚举的高级用法,枚举实现接口,竟是别有洞天
- OpenJDK源码研究笔记(四)-编写和组织可复用的工具类和方法
- Spark Streaming源码解读之Driver中的ReceiverTracker架构设计以及具体实现彻底研究
- 第11课:Spark Streaming源码解读之Driver中的ReceiverTracker架构设计以及具体实现彻底研究
- 第11课:Spark Streaming源码解读之Driver中的ReceiverTracker架构设计以及具体实现彻底研究
- 第11课:Spark Streaming源码解读之Driver中的ReceiverTracker架构设计以及具体实现彻底研究
- Spark Streaming源码解读之Driver中的ReceiverTracker架构设计以及具体实现彻底研究
- 第11课:Spark Streaming源码解读之Driver中的ReceiverTracker架构设计以及具体实现彻底研究
- OpenJDK源码研究笔记(五)-缓存Integer等类型的频繁使用的数据和对象,大幅度提升性能(一道经典的Java笔试题)
- OpenJDK源码研究笔记(五)-缓存Integer等类型的频繁使用的数据和对象,大幅度提升性能(一道经典的Java笔试题)
- 第11课:Spark Streaming 源码解读之Driver中ReceiverTracker架构设计及具体实现彻底研究