-
Notifications
You must be signed in to change notification settings - Fork 35
定义接口后,在接口与实现类之间加一层Abstract实现类
吴达 edited this page Dec 25, 2020
·
1 revision
对于数据库的增删改查等操作,我们首先定义接口,然后基于接口统一操作数据。实现类可以选择不同的数据库,比如选择MySQL或者MongoDB等;同时, 不同实现类还可以选择不同的ORM框架,比如如果选择了MySQL存储数据,则可以选择jooq,mybatis等ORM框架。但是,对于不同的实现类,有很多操作是相同的,比如参数校验, 缓存的设置,更新等等,这些操作不会因为选择了不同的数据库或者选择了不同的ORM框架而不一样,因此,为每个接口设计一个抽象实现类,在这个抽象类中完成这些相同的操作, 然后把操作数据库的工作交给具体的实现类。
- 首先我们定义添加用户的接口
public interface UserManager {
void addUser(String username,String password);
}
- 然后定义抽象类,完成参数校验,缓存设置等工作,并且定义一个相应的protected方法,供真正的实现类实现
public abstract class AbstractUserManager implements UserManager {
void addUser(String username,String password){
// 参数校验
// username唯一性校验
// 保存到具体数据库中,可能是MySQL,使用的jooq ORM框架;也可能是MongoDB
addUserDbOp(username, password);
// 新添加的用户设置到缓存中
}
// 这个才是实现类真正需要实现的方法
protected abstract void addUserDbOp(String username,String password);
}
如上面的代码,addUserDbOp作为addUser方法保存数据的一部分,因此,在addUser方法名后面加上DbOp后缀, 这样既有规律可循,又减少命名所带来的额外工作(有时候命名是很痛苦的一件事情)。
架构
数据库设计
约定
基础工具
DataType模块
Property模块
权限模块