2011年计算机二级试JAVA知识点:代码复用的规则

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论

  例如:下面的接口定义了组件的功能:发送消息;类Transceiver实现了该接口;而其子类Pool只是管理多个Transceiver对象,而没有提供自己的接口实现。建议使用组合方式,而不是继承!

  public interface ITransceiver{

  public abstract send(String msg);

  }

  public class Transceiver implements ITransceiver {

  public send(String msg){

  System.out.println(msg);

  }

  }

  //使用继承方式的实现

  public class Pool extends Transceiver{

  private List pool = new Vector();

  public void add(Transceiver aTransceiver){

  pool.add(aTransceiver);

  }

  public Transceiver get(int index){

  pool.get(index);

  }

  }

  //使用组合方式的实现

  public class Pool {

  private List pool = new Vector();

  public void add(Transceiver aTransceiver){

  pool.add(aTransceiver);

  }

  public Transceiver get(int index){

  pool.get(index);

  }

  }

  拆分过大的类

  如果一个类有太多的方法(超过50个),那么它可能要做的工作太多,我们应该试着将它的功能拆分到不同的类中,类似于规则四。

  作用截然不同的对象应该拆分

  在构建的过程中,你有时会遇到这样的问题:对同样的数据,有不同的视图。某些属性描述的是数据结构怎样生成,而某些属性描述的是数据结构本身。最好将这两个视图拆分到不同的类中,从类名上就可以区分出不同视图的作用。

  类的域、方法也应该有同样的考虑!

  尽量减少对参数的隐含传递

  两个方法处理类内部同一个数据(域),并不意味着它们就是对该数据(域)做处理。许多时候,该数据(域)应该作为方法的参输入数,而不是直接存取,在工具类的设计中尤其应该注意。例如:

  public class Test{

  private List pool = new Vector();

  public void testAdd(String str){

  pool.add(str);

  }

  public Object testGet(int index){

  pool.get(index);

  }

  }

  两个方法都对List对象pool做了操作,但是,实际上,我们可能只是想对List接口的不同实现Vector、ArrayList等做存取测试。所以,代码应该这样写:

  public class Test{

  private List pool = new Vector();

  public void testAdd(List pool, String str){

  pool.add(str);

  }

  public Object testGet(List pool, int index){

  pool.get(index);

  点击查看:2011年计算机二级考试JAVA知识点整理汇总

上一页123下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答