给JAVA设计开发新手一些建议和意见(2)
来源:优易学  2010-1-11 13:54:12   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  【滥用接口】
  
  现在流行"面对接口编程",这本身本来是不错,但是滥用接口的现象却经常发生。
  
  "面向接口",于是所有的类都有一个对应的接口,接口的函数声明和类一模一样,而且一个接口只有一个类来实现它。这样的面向接口有什么意义哪? (为了用Spring的事务的情况除外)
  
  根据"迪比特法则(Law of Demter)",一个对象应当对其他对象有尽可能少的了解。一个接口内应该只定义对方所需要的方法,而不要把一些没用的方法声明放在接口里面。
  
  例如如下一个类:
  
  public class MyCounter
  
  {
  
  private int n1;
  
  private int n2;
  
  public MyCounter(int n1,int n2)
  
  {
  
  this。n1=n1;
  
  this。n2=n2;
  
  }
  
  public void setN1(int n1)
  
  {
  
  return this。n1 = n1;
  
  }
  
  public void setN2(int n2)
  
  {
  
  return this。n2 = n2;
  
  }
  
  public int getN1()
  
  {
  
  return n1;
  
  }
  
  public int getN2()
  
  {
  
  return n2;
  
  }
  
  public int getResult()
  
  {
  
  return n1 + n2;
  
  }
  
  }
  
  我们可以看到,这个类的主要目的是得到计算结果,所以正确的接口应该类似:
  
  public interface Counter
  
  {
  
  int getResult();
  
  }
  
  但是很多情况下,经常是这样的接口:
  
  public interface Counter
  
  {
  
  int getResult();
  
  int getN1();
  
  int getN2();
  
  void setN1(int n1);
  
  void setN2(int n2);
  
  }
  
  我们想一想,这样做有2个后果:
  
  1.除了getResult之外,其他的函数我们根本用不到,所以是多余的。
  
  2.如果我们要自己实现一个Counter,如果接口中仅仅定义了getResult,我们仅仅需要实现它就可以了。我们自己的类可能是多个数运算,有乘除加减等等各种运算,参数也有可能是一些数组。但是如果按照第二种方法声明接口的话,我们就必须实现后面的四个方法,如果这样的话,实现这样东西不仅没用,而且浪费时间。我们恐怕要大声骂娘了吧。
  
  所以,接口有好的作用,但是不要滥用。
  
  ■ 如果你的接口永远只有一个类实现,那么可能就没有必要用接口。
  
  ■ 你的接口只需要声明别人用到的函数即可。

上一页  [1] [2] 

责任编辑:cyth

文章搜索:
 相关文章
热点资讯
热门课程培训