Chinaunix首页 | 论坛 | 博客
  • 博客访问: 493619
  • 博文数量: 78
  • 博客积分: 1271
  • 博客等级: 中尉
  • 技术积分: 1108
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-14 14:39
文章分类

全部博文(78)

文章存档

2015年(2)

2014年(6)

2013年(15)

2012年(18)

2011年(37)

分类: Java

2011-11-06 22:43:44

   JAVA语言提供了两种机制用于定义整个类型等级结构,抽象类与接口的主要区别体现在以下四个方面[JAVA与模式 P92]:
   (1)抽象类可以提供方法的实现体,而接口只能定义方法的签名;
   (2)JAVA中只能采用单一继承,每个类只能继承一个类,而接口却可以实现多个;
   (3)从重构角度讲,从具体类提取出一个接口相对容易,只需抽取方法签名,然后具体类实现即可,但从具体类抽取方法到抽象类就显得困难得多,特别是具体类已扩展自一个类,这样的话只能一直往类型等级的高层移;
   (4)基于接口可以实现多个,JAVA接口可以定义混口类型;

   系统设计的开-闭原则,里氏替换原则,依赖倒转原则(依赖于抽象而不是依赖于具体类)都于抽象类和接口有很大的关系;

  使用接口+抽象类的方式应该讲是个不错的选择,类型的定义由接口来提供,而默认的方法实现则由抽象类提供,这样具体类可以扩展自该接口,也可以extend自抽象类。这个是缺省适配器模式[JAVA与模式 P92]。
 
   充份运用好接口和抽象类,可以为系统提供一套符合设计原则,而且能满足应用要求的类型等级结构。
阅读(806) | 评论(0) | 转发(0) |
0

上一篇:JAVA的接口

下一篇:Goodbye Dennis Ritchie

给主人留下些什么吧!~~