我说下我的设想,用struts和hibernate
这里面应该有个User类作为持久化对象,
class  User{
   private long id;   //自动生成ID
   private String type;//用户类型
   private int record;  //插入的数值
   
   .......//一大堆get,set方法
   
   if(type.equals("high"))    //高级用户
       record*=Constants.HIGH;  //constants类包装了所要乘的倍数,以后扩展很容易
   if(type.equals("normal"))
       record*=Constants.NORMAL;
}
然后定义User.hbm.xml文件(楼主熟悉hibernate的话就很简单的,我只大概说下个人的思路)
接下来是一个DAO接口,处理一般的查找,删除,更新等等
public interface UserDao { 
    public User getUserById(Long id); 
    public Collection findAll(); 
    public void updateItem(User u); 
}
然后是实现这个接口的UserDAOImpl
public class UserDaoHibernateImpl implements UserDao extends HibernateDaoSupport { 
    public Item getUserById(Long id) { 
        return (Item) getHibernateTemplate().load(User.class, id); 
    } 
    public Collection findAll() { 
        return (List) getHibernateTemplate().find("from User"); 
    } 
    public void updateItem(User u) { 
        getHibernateTemplate().update(u); 
    } 
}
然后是UserManager来处理具体的事务,大概应该是这样public class UserManager { 
    private UserDao userDao; 
    public void setUserDao(UserDao userDao) { this.UserDao = UserDao;} 
    public Bid loadUserById(Long id) { 
        itemDao.loadUserById(id); 
    } 
    public Collection listAllUsers() { 
        return  UserDao.findAll(); 
    } 
    
     ........//其他以后想加入的业务逻辑   
}
通过这4个类,我想该可以满足你的要求了,这也是俺从别的地方学来的,汗

解决方案 »

  1.   

    还有hibernate同过hibernate.propertites文件定义了几乎所有的数据库,数据库的怎么换都没问题:)
      

  2.   

    首先就数据库来说,因为JDBC已经很通用,所有问题不大。只有业务的类型和业务的逻辑倍数可以用策略模式来实现:可以首先声明几个公共基础接口:UserType,Stratege。
    public abstract class UserType {   public int getBusinessNumber();
    }
    public abstract class Stratege {
        public int getWhatYouNeed(UserType user);       //根据用户类型来返回需要的倍数之类。今后的具体的业务边了就写几个Stratege的子类。例如:public class Stratege1 extends Stratege {
        public int getWhatYouNeed(UserType user) {
            return 2 * user.getBusinessNumber;
        }       
    }
    变量引用的时候用UserType,和Stratege。具体要用什么策略的时候就用其子策略来new 一个对象。不知道你需要的是不是这个意思??:)