小弟因为要找工作,所以急需一个相对完整的项目.但在实践过程中,出了一个问题,虽不影响后面的进度,但希望能知道是什么情况.是这样的:我定义了一个(IuserDao)模板类,然后用(UserDao)实现类实现(IuserDao)模板类的方法, 这个模板类是定义为接口还是抽象类, 我是用接口现实模板类的. 以后每次添加新的方法或复写里面的方法都会去继承上次更新的类, 如果我要第三次升级的话, 又要
public class UserDaoEdition3 extends UserDaoEdition2 implements IuserDaoEdition3 {}:package com.itlib.myZone.user.userDao;/**
 * 实现升级版本后需要加入的方法IuserDaoEdition2, 
 * 继承UserDao类, 拥有他的方法, 并选择是否复写内部方法.
 * */
public class UserDaoEdition2 extends UserDao implements IuserDaoEdition2 { /**
 * 添加新的方法
 * */
public void doSomething() {
System.out.println("--此版本为2.0版.--");
} /**
 * 复写UserDao中的checkUserPower()
 * */
public boolean checkUserPower(String userId, String powerValue) throws PowerNotFoundException {
                //1.使用pool实现(在UserDao中已完成)
//2.使用hibernate实现
return false;
}}
这个是我的层次结构. 像我这样做好不好.

解决方案 »

  1.   

    抽象类和接口的最大的区别是抽象类里可以实现方法,而接口只可以声明方法。
    抽象类和接口都不可以以new的形式创建一个引用,如果要创建对象,必须由其子类实现
    如果你的模板方法里需要实现某些共同的方法,就要用抽象类,否则用接口类就可以了。
      

  2.   

    知道适配器模式吗?你可以把IuserDao定义为接口,把UserDao定义为抽象类继承IuserDao,这样,再一次继承UserDao的时候,就可以不用全部实现IuserDao中定义的方法,只实现你想要的方法就可以了!