在實際開發中,代碼的重用性一直都是關注的重點。如何才能提高代碼的重用性是很多人在思考的問題。
在學習提升代碼重用性的時候,發現的一些技巧,寫下來以便以後回顧。
在Java Web中,通常采用MVC模式進行開發。在實際開發中,使用MVC5層架構進行細分,即視圖層,控制層,業務層,持久層,實體層。
拿持久層來當例子吧。
持久層主要的職責就是負責對資料庫的各種操作,講白了就是增删改查。
一般情況下,一個實體類對應一個Dao。
在這個Dao上編寫基本的增删改查方法。就像這樣
package cn.wzj.dao;
import java.util.List;
import cn.wzj.po.Person;
public interface PersonDao {
public void insert(Person person) throws Exception;
public void delete(int id) throws Exception;
public void update(Person person) throws Exception;
public Person selectById(int id) throws Exception;
public List<Person> selectByAll() throws Exception;
}
接着就去寫其他實體類對應的Dao,然後寫他個幾十個。
這樣寫的話代碼的重用性就比較差。像這段代碼裡的這幾個方法可以說在所有Dao類中幾乎都有,那為何不把它抽取出來封裝到一個類裡面去呢?
package cn.wzj.dao;
import java.util.List;
/**
* Dao基礎接口
*
* 把那些所有Dao類都通用的方法給抽取出來,涉及到實體類的地方,我們用泛型給它替換掉
* 這樣就實作了簡單的封裝
* @author apple
*/
public interface BaseDao<T> {
public void insert(T po) throws Exception;
public void delete(int id) throws Exception;
public void update(T po) throws Exception;
public T selectById(int id) throws Exception;
public List<T> selectByAll() throws Exception;
}
使用泛型就簡單的對Dao類中通用的方法封裝在一起。然後Person類對應的Dao就簡單多了。
package cn.wzj.dao;
import cn.wzj.po.Person;
public interface PersonDao extends BaseDao<Person>{}