继承还是代理啊?????

1. 接口代码

Java代码 复制代码  收藏代码
  1. package com.hp.common.basedao;   
  2.   
  3. import java.util.List;   
  4.   
  5. /**  
  6.  * <p>基础接口</p>  
  7.  *  
  8.  */  
  9. public interface BaseService {   
  10.   
  11.      
  12.     /**  
  13.      * 添加  
  14.      * @param obj  
  15.      */  
  16.     public void save(Object obj);   
  17.     /**  
  18.      * 修改  
  19.      * @param obj  
  20.      */  
  21.     public void update(Object obj);   
  22.     /**  
  23.      * 列表  
  24.      * @return list<?>  
  25.      */  
  26.     public List<?> list();   
  27.     /**  
  28.      * 查找  
  29.      * @param id(int)  
  30.      * @return object  
  31.      */  
  32.     public Object find(int id);   
  33.        
  34.            
  35. }   
  36.            
  37.           
package com.hp.common.basedao;

import java.util.List;

/**
 * <p>基础接口</p>
 *
 */
public interface BaseService {

  
	/**
     * 添加
     * @param obj
     */
	public void save(Object obj);
	/**
	 * 修改
	 * @param obj
	 */
	public void update(Object obj);
	/**
	 * 列表
	 * @return list<?>
	 */
	public List<?> list();
	/**
	 * 查找
	 * @param id(int)
	 * @return object
	 */
	public Object find(int id);
	
		
}
		
		


2.接口实现

 

Java代码 复制代码  收藏代码
  1. package com.hp.common.basedao;   
  2.   
  3. import java.util.ArrayList;   
  4. import java.util.List;   
  5.   
  6. import javax.annotation.Resource;   
  7.   
  8. import org.hibernate.Query;   
  9. import org.hibernate.SessionFactory;   
  10.   
  11. import org.springframework.stereotype.Service;   
  12. import org.springframework.transaction.annotation.Propagation;   
  13. import org.springframework.transaction.annotation.Transactional;   
  14.   
  15.   
  16. /**  
  17.  * BaseService 接口实现</br>  
  18.  *  @see com.hp.common.basedao.BaseService  
  19.  *  @author   
  20.  *   
  21.  */  
  22.   
  23. @Transactional  
  24. public class BaseServiceImpl implements BaseService{   
  25.   
  26.     @Resource  
  27.     SessionFactory factory;   
  28.     private Object obj;   
  29.   
  30.        
  31.     /**  
  32.      * 获取类名称  
  33.      *   
  34.      * @param obj  
  35.      * @return String  
  36.      */  
  37.     public String getclname(Object obj) {   
  38.   
  39.         return obj.getClass().getSimpleName();   
  40.     }   
  41.   
  42.     /**  
  43.      * 组装List hql语句  
  44.      *   
  45.      * @param obj  
  46.      * @return hql  
  47.      */  
  48.     public String getHQL(Object obj) {   
  49.         String hql = "From " + getclname(obj);   
  50.         return hql;   
  51.     }   
  52.   
  53.     public Object getObj() {   
  54.         return obj;   
  55.     }   
  56.   
  57.     public void setObj(Object obj) {   
  58.         this.obj = obj;   
  59.     }   
  60.   
  61.     public void del(int... ids) {   
  62.         for (int id : ids) {   
  63.             factory.getCurrentSession().delete(   
  64.                     factory.getCurrentSession().load(obj.getClass(), id));   
  65.         }   
  66.     }   
  67.   
  68.        
  69.     public void del(String name, String param) {   
  70.         List<?> list = factory.getCurrentSession().createQuery(   
  71.                 getHQL(obj) + " where " + name + "='" + param + "'").list();   
  72.         for (int i = 0; i < list.size(); i++) {   
  73.             factory.getCurrentSession().delete(list.get(i));   
  74.         }   
  75.     }   
  76.   
  77.     public Object find(int id) {   
  78.         // factory.getCurrentSession().createQuery(getHQL(this.obj)+" where ");   
  79.         return null;   
  80.     }   
  81.   
  82.        
  83.   
  84.     @Transactional(propagation = Propagation.NOT_SUPPORTED)   
  85.     public List<?> list() {   
  86.   
  87.         return factory.getCurrentSession().createQuery(getHQL(obj)).list();   
  88.     }   
  89.   
  90.     public void save(Object obj) {   
  91.         factory.getCurrentSession().persist(obj);   
  92.     }   
  93.   
  94.     public void update(Object obj) {   
  95.         factory.getCurrentSession().merge(obj);   
  96.     }   
  97.        
  98. }  
package com.hp.common.basedao;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.hibernate.Query;
import org.hibernate.SessionFactory;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;


/**
 * BaseService 接口实现</br>
 *  @see com.hp.common.basedao.BaseService
 *  @author 
 * 
 */

@Transactional
public class BaseServiceImpl implements BaseService{

	@Resource
	SessionFactory factory;
	private Object obj;

	
	/**
	 * 获取类名称
	 * 
	 * @param obj
	 * @return String
	 */
	public String getclname(Object obj) {

		return obj.getClass().getSimpleName();
	}

	/**
	 * 组装List hql语句
	 * 
	 * @param obj
	 * @return hql
	 */
	public String getHQL(Object obj) {
		String hql = "From " + getclname(obj);
		return hql;
	}

	public Object getObj() {
		return obj;
	}

	public void setObj(Object obj) {
		this.obj = obj;
	}

	public void del(int... ids) {
		for (int id : ids) {
			factory.getCurrentSession().delete(
					factory.getCurrentSession().load(obj.getClass(), id));
		}
	}

	
	public void del(String name, String param) {
		List<?> list = factory.getCurrentSession().createQuery(
				getHQL(obj) + " where " + name + "='" + param + "'").list();
		for (int i = 0; i < list.size(); i++) {
			factory.getCurrentSession().delete(list.get(i));
		}
	}

	public Object find(int id) {
		// factory.getCurrentSession().createQuery(getHQL(this.obj)+" where ");
		return null;
	}

	

	@Transactional(propagation = Propagation.NOT_SUPPORTED)
	public List<?> list() {

		return factory.getCurrentSession().createQuery(getHQL(obj)).list();
	}

	public void save(Object obj) {
		factory.getCurrentSession().persist(obj);
	}

	public void update(Object obj) {
		factory.getCurrentSession().merge(obj);
	}
	
}



3.某段继承代码

Java代码 复制代码  收藏代码
  1. package com.hp.system.service;   
  2.   
  3. import com.hp.common.basedao.BaseService;   
  4. /**  
  5.  * Extends BaseService</br>  
  6.  * {@link com.hp.common.basedao.BaseService}  
  7.  * @author   
  8.  *  
  9.  */  
  10. public interface PubUsersService extends BaseService {   
  11.        
  12.        
  13. }  
package com.hp.system.service;

import com.hp.common.basedao.BaseService;
/**
 * Extends BaseService</br>
 * {@link com.hp.common.basedao.BaseService}
 * @author 
 *
 */
public interface PubUsersService extends BaseService {
	
	
}


然后就是此继承的接口实现。

Java代码 复制代码  收藏代码
  1. package com.hp.system.impl;   
  2.   
  3. import javax.annotation.Resource;   
  4.   
  5. import org.hibernate.SessionFactory;   
  6. import org.springframework.stereotype.Service;   
  7. import org.springframework.transaction.annotation.Transactional;   
  8.   
  9. import com.hp.common.basedao.BaseServiceImpl;   
  10. import com.hp.system.bean.PubUsers;   
  11. import com.hp.system.service.PubUsersService;   
  12.   
  13. @Service  
  14. @Transactional  
  15. public class PubUsersServiceImpl extends BaseServiceImpl implements  
  16.         PubUsersService {   
  17.     @Resource  
  18.     SessionFactory factory;   
  19.     PubUsers pubUsers=new PubUsers();   
  20.     public PubUsersServiceImpl() {   
  21.         super.setObj(pubUsers);   
  22.     }   
  23.   
  24. }  
package com.hp.system.impl;

import javax.annotation.Resource;

import org.hibernate.SessionFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.hp.common.basedao.BaseServiceImpl;
import com.hp.system.bean.PubUsers;
import com.hp.system.service.PubUsersService;

@Service
@Transactional
public class PubUsersServiceImpl extends BaseServiceImpl implements
		PubUsersService {
	@Resource
	SessionFactory factory;
	PubUsers pubUsers=new PubUsers();
	public PubUsersServiceImpl() {
		super.setObj(pubUsers);
	}

}



我们有没有必要如此继承。且不说其中代码的拙劣之处。

想起.net中的代理机制。是不是在java中我们滥用了继承。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值