Java 接口学习

接口其实蛮早就了解过了,这次深入看了下。还是有所收获,接口其实在java模式设计中有重要作用。主要是学到了与接口相关的几种设计模式。


首先,接口的存在还是为了弥补java中单继承的不足的。比如,鱼既是一种动物又是一种食物,那么它具有两个类的特点,但是却又没办法同时继承,然而有了接口的话,可以通过继承一个类,然后再实现另外一个接口就可以了。但是,到底是弄成Animal接口还是Food接口呢?这得从本质上看,鱼本质上是一种动物,其次才是一种食物,那么我们让它继承Animal类,并实现Food接口。


接口的一些规则:

1.接口中的成员变量默认都是public, static, final类型的。必须全部显式初始化,并且只能是这样。

2.接口中的方法默认都是public, abstract类型的,并且只能这样。如:void method();

3.接口没有构造函数,不能被实例化。

4.一个解耦不能实现另一个借口,但是他可以继承多个其他接口。


因为同是高度抽象,所以接口常被拿来与抽象类作比较。它们的区别有:

1.抽象类可以为部分方法提供默认的实现,从而避免在子类中重复实现他们,从而提高代码的可重用性;而接口中只能包含抽象方法

2.类只能单继承,也就是说只能继承一个抽象类;而一个类可以实现多个接口


接口相关的设计模式:

1.定制服务模式。将服务精粒度化,然后用组合的方式粗粒度化接口。

2.适配器模式。当源接口和目标接口的方法不一致时,可是设置一个适配器类来实现接口的转换。有两种实现方式:1.继承实现方式;2.组合实现方式。 通常使用组合实现方式,因为组合关系比继承关系松耦合程度更高。

3.默认适配器模式。由于接口中的方法都是抽象的,那么实现类要么全部实现,要么部分实现然后将自己声明为抽象类。然后应用中我们很可能只用到接口中的少量方法,这样就会很麻烦,可以提供一个默认的类,它实现了接口的所有方法,但是是空实现。在使用的时候,我们可以以继承或者匿名类的方式覆写需要的方法即可。

3.代理模式。在委托方和第三方之间可以设置一个代理类来预处理、过滤和转发消息。特点是委托类和代理类有同样地接口,委托类和代理类是组合关系。一般代理类的方法在被调用后,最后都会调用委托类的方法。这样设计的原因是比如对象分布在不同机器上,即运行在不同的JVM进程中时,频繁的远程通信的效率会很低,那么代理类就可以通过预处理、过滤、转发来提高系统响应效率。

4.标识类型模式。这种接口不包含任何方法,它仅仅代表一种抽象类型,例如Food,所有实现Food接口的类,说明他们都是实物。

5.常量接口模式。类中只有常量。可以通过import static xxinterface.*; 来使用当中的常量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值