例如一个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中提炼出来,放到别的地方去。要知后事如何,请看博客 用适配器模式解决接口的不足。