接口的理解

例如一个EntityModel类拥有很多属性信息:name,age,height,weight。

现在如果想使用其中的height和weight,可以定义一个接口Ibodyinfo

package com.wjy.understandinterface;

public interface Ibodyinfo {
public abstract double getHeight();
public abstract double getWeight();
}


然后让EntityModel类去实现这个接口,就可以像一下这样获得height和weight信息了。

Ibodyinfo bodyinfo=new EntityModel("wangjiyuan",22,177.00,74.00);
bodyinfo.getHeight();
bodyinfo.getWeight();

就是接口引用指向实现它的类的对象(类似于父类引用指向子类对象)。这样做的好处是只要有类实现了这个 Ibodyinfo接口,就可以利用接口的引用获得height和weight信息。例如:

返回类型 函数名(Ibodyinfo bodyinfo)这样的话,可以向函数的参数中传递任意一个实现了Ibodyinfo接口的类的对象。

如果是这样的: 返回类型 函数名(EntityModel model)则只能像函数的参数中传递EntityModel的子类对象了,不利于扩展。

 

但是:这样的结构是有不足之处的。比如说:如果我们需要 name和age信息,就需要定义别的借口,并让EntityModel实现它。如果我们需要单独处理的数据很多时,就需要定义很多的接口,这些接口中的方法必须都在EntityModel中实现。EntityModel会变得很长很长。所以想要解决这个问题就要使用适配器模式,将接口的方法从EntityModel中提炼出来,放到别的地方去。要知后事如何,请看博客 用适配器模式解决接口的不足。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值