关闭

第18条:接口优于抽象类

标签: primitivewrapper扩展javaclass框架
1009人阅读 评论(1) 收藏 举报
分类:
Java语言设计提供了两种机制,可以用来定义允许多个实现的类型:接口和抽象类。
因为Java只允许单继承,所以抽象类作为类型定义受到了极大的限制。


现有的类可以很容易被更新,以实现新的接口。
一般来说,无法更新现有的类来扩展新的抽象类。如果你希望两个类来扩展一个抽象类,就必须把抽象类放到类型层次的高处,以便这两个类的一个祖先成为他的子类。这样会间接的伤害到类的层次,迫使这个公共祖先的所有后代类都扩展这个新的抽象类,无论他对于这个后代类是否合适。


接口是定义mixin(混合类型)的理想选择。类除了实现他的“基本类型(primary type)”之外,还可以实现这个mixin类型,以表示提供了某些可供选择的行为。


接口允许我们构造非层次结构的类型框架。


包装类(wrapper class)模式,接口使得安全地增强类的功能成为可能。


通过对你导出的每个重要接口都提供一个抽象的骨架实现(skeletal implementation)类,把这个抽象类的优点结合起来。


必须认真研究接口,并确定哪些方法是最为基本的(primitive),其他的方法则可以根据他们来实现。这些基本的方法将成为骨架实现类中抽象方法。然后,必须为接口中所有其他的方法提供具体的实现。


抽象类的演变比接口的演变要容易的多。


接口一旦被公开发行,并且已被广泛实现,再想改变这个接口几乎是不可能的。
0
1

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:740739次
    • 积分:9025
    • 等级:
    • 排名:第2154名
    • 原创:183篇
    • 转载:60篇
    • 译文:0篇
    • 评论:128条
    最新评论