两个类里面的代码几乎重复
目前,我有两个类:UserHibernateDao
和 TicketHibernateDao
:
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import model.dao.Dao;
import model.entity.User;
public class UserDaoHibernate extends HibernateDaoSupport implements Dao<User> {
public User get(long id) {
return getHibernateTemplate().get(User.class, id);
}
public void save(User user) {
getHibernateTemplate().save(user);
}
public void remove(long id) {
getHibernateTemplate().delete(
getHibernateTemplate().get(User.class, id));
}
}
第二:
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import model.dao.Dao;
import model.entity.Ticket;
public class TicketDaoHibernate extends HibernateDaoSupport implements
Dao<Ticket> {
public Ticket get(long id) {
return getHibernateTemplate().get(Ticket.class, id);
}
public void save(Ticket ticket) {
getHibernateTemplate().save(ticket);
}
public void remove(long id) {
getHibernateTemplate().delete(
getHibernateTemplate().get(Ticket.class, id));
}
public void save(Ticket ticket) {
getHibernateTemplate().saveOrUpdate(ticket);
}
}
我看到这两个类包含几乎相同的方法和方法实现。
我想,这不太好。 你觉得怎么样?或者这是正常的?
At this moment, I have two classes: UserHibernateDao
and TicketHibernateDao
:
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import model.dao.Dao;
import model.entity.User;
public class UserDaoHibernate extends HibernateDaoSupport implements Dao<User> {
public User get(long id) {
return getHibernateTemplate().get(User.class, id);
}
public void save(User user) {
getHibernateTemplate().save(user);
}
public void remove(long id) {
getHibernateTemplate().delete(
getHibernateTemplate().get(User.class, id));
}
}
and second:
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import model.dao.Dao;
import model.entity.Ticket;
public class TicketDaoHibernate extends HibernateDaoSupport implements
Dao<Ticket> {
public Ticket get(long id) {
return getHibernateTemplate().get(Ticket.class, id);
}
public void save(Ticket ticket) {
getHibernateTemplate().save(ticket);
}
public void remove(long id) {
getHibernateTemplate().delete(
getHibernateTemplate().get(Ticket.class, id));
}
public void save(Ticket ticket) {
getHibernateTemplate().saveOrUpdate(ticket);
}
}
I see that both classes contain almost equal methods and method implementations.
I think, it is not very good. What do you think? Or it is normal?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
像这样的东西应该适合你,它通常被称为“通用 DAO 模式”。
然后:
然后
Something like this should work for you, it's generally called the "Generic DAO Pattern".
and then:
and
使用泛型并阅读此文档。太棒了。
Use Generics and read this document. It's excellent.
将以下有用的方法添加到
public abstract Dao
中:然后您的
get
和remove
方法就可以移至Dao中;
并重写为:Add the following useful method to
public abstract Dao<T>
:Then your
get
andremove
methods can be moved toDao<T>
and rewritten as: