Effective Java学习--第22条:接口优先于抽象类

ef提出三个优先使用接口的原因:

  1. 现有的类可以很容易地被更新,以实现新的接口。
  2. 接口是定义mixin(混合类型)的理想选择。
  3. 接口允许我们构造非层次结构的类型框架。

假设有一个接口代表singer,另一个接口代表songwriter。

public interface Singer(){
    AudioClip sing(Song s);
}

public interface Songwriter(){
    Song compose(boolean hit);
}

则当我们要表达一个Person是歌唱家,作曲家,歌唱家兼作曲家时会非常方便,各取所需。而如果是用抽象类,复杂程度可以想象。

在学习代理这一块知识点时,如果代理类的原生类没有实现某个接口则只能使用cglib代理,而实现了接口则可以使用jdk代理,按照spring的做法,是优先使用jdk代理,其次才是cglib代理,可见一斑吧,但是还没有研究为什么如此抉择。

MVC设计模式中也是大量使用接口设计,主要是结合反射,可以很方便的更改系统实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值