一种巧妙的设计--通过继承扩展接口
2015-06-11 10:23
357 查看
基本的增删改查:
UserDao接口:
package com.zzj; import java.io.Serializable; /** * 基本的增删改查 * * @author Administrator * */ public interface CRUD { Serializable save(Object entity); void update(Object entity); void delete(Object entity); <T> T loadByKey(Class<T> entityClass, Serializable key); }Dao抽象类:
package com.zzj; import java.io.Serializable; public abstract class AbstractDao implements CRUD{ public void delete(Object entity) { // TODO Auto-generated method stub } public <T> T loadByKey(Class<T> entityClass, Serializable key) { // TODO Auto-generated method stub return null; } public Serializable save(Object entity) { // TODO Auto-generated method stub return null; } public void update(Object entity) { // TODO Auto-generated method stub } }
UserDao接口:
package com.zzj; public interface UserDao extends CRUD { Object query(String username, String password); }UserDao实现类:
package com.zzj; public class UserDaoImpl extends AbstractDao implements UserDao { @Override public Object query(String username, String password) { // TODO Auto-generated method stub return null; } public static void main(String[] args) { UserDao userDao = new UserDaoImpl(); Object user = new Object(); userDao.save(user); userDao.update(user); userDao.delete(user); userDao.loadByKey(Object.class, 1); userDao.query("Tom", "123"); } }AbstractDao可以不实现CRUD接口,只要它的方法签名和返回值与CRUD接口的方法签名和返回值保持一致,就可以实现相同的效果。
相关文章推荐
- JSP之EL表达式
- Android数据库高手秘籍——使用LitePal升级表
- 欢迎使用CSDN-markdown编辑器
- CSP开发基础--CSP入门简介
- C++ 10.3.6 查找并读取map中的元素
- Delphi XE8中开发DataSnap程序常见问题和解决方法 (二)想对DBExpress的TSQLDataSet写对数据库操作的SQL语句出错了!
- Session的缓存
- Fair Scheduler中的Delay Schedule分析
- JQuery包裹DOM节点的方法
- 实习期间被教导的事情
- 数据结构系列之折半查找树
- PostgreSQL-存储过程
- Redis学习手册(String数据类型)
- 九度OJ-题目1349:数字在排序数组中出现的次数
- 总结的面试中常见65种应聘技巧回答
- JAVA字符串比较equals()和equalsIgnoreCase()差异
- 安全上你不该犯的错
- iOS开发之Pch预编译文件的创建
- CSS+JS打造的黑白风格网页计算器
- 查看Activity栈