在实际开发中,代码的重用性一直都是关注的重点。如何才能提高代码的重用性是很多人在思考的问题。
在学习提升代码重用性的时候,发现的一些技巧,写下来以便以后回顾。
在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>{}