王吉元-NWPU

导航

 

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

posted on 2013-05-03 09:39  王吉元  阅读(366)  评论(0编辑  收藏  举报