java基础----抽象类和接口的通配类的方式,简化代码

前言: java 合理的使用接口和抽象类可以大大减少冗余代码的使用,例如可以将常见的增删改查的操作,抽象成一个基类,通过通配类的方式实现对数据的增删改查,通过创建一个抽象类让其他的类继承抽象类得到里面通配的方法

通配类方法简单实例:

创建一个基类,里面包含一些基础的方法:

package test.java.base;

import java.util.List;


/**
 * @author 作者:jcl
 * @createDate 创建时间:2019年3月25日 上午9:51:18
 */
public  class CurdService<T> {

	public T get(T t) {
		return t;
	}

	public void add(T t) {

	}

	public void update(T t) {

	}

}

再创建一个具体的实现service,继承这个基类

package test.java.base;

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

import test.java.model.User;


/**
 * @author 作者:jcl
 * @createDate 创建时间:2019年3月25日 上午9:55:42
 */
public class UserService extends CurdService<User>{

	public List<User> getList() {
		// TODO Auto-generated method stub
		List<User> list = new ArrayList<User>();
		
		User user = new User();
		user.setAddress("shanghai");
		user.setAddress("12");
		user.setUsername("test");
		user.setPassword("123");
		
		list.add(user);
		return list;
	}

}

测试通配效果:

package test.java;

import java.util.List;

import test.java.base.UserService;
import test.java.model.User;


/**
 * @author 作者:jcl
 * @createDate 创建时间:2019年3月25日 上午9:55:09
 */
public class BaseTest {
	
	
	public static void main(String[] args) {
		
		UserService service = new UserService();
		User user = new User();
		user.setAddress("shanghai");
		user.setAddress("12");
		user.setUsername("test");
		user.setPassword("123");
		User userRes = service.get(user);
		
		System.out.println(userRes.toString());
	}

}

这样基类中的方法就可以被其他的service实现复用从而大大简化代码

通配类方法升级实现增删改查:

dao基类:

package test.java.base;

import java.util.List;


/**
 * @author 作者:jcl
 * @createDate 创建时间:2019年3月25日 上午10:10:56
 */
public interface CurdDao<T> {
	
	
	public T get(String t); 
	
	public int update(T t);
	
	public int add(T t);
	
	public int delete(T t);
	
	public List<T> getList();
	
}	

dao层:

package test.java.base;

import test.java.model.User;


/**
 * @author 作者:jcl
 * @createDate 创建时间:2019年3月25日 上午10:15:09
 */
public interface UserDao extends CurdDao<User>{
	// 这里面写除了增删改查之外的方法
	
	public User getChange();
	
}

service基类:

package test.java.base;

import java.util.List;


/**
 * @author 作者:jcl
 * @createDate 创建时间:2019年3月25日 上午9:51:18
 */
public  class CurdService<T extends CurdDao<T1>,T1> {
	
	
	T dao;
	
	/*
	 * T1 为实体
	 * 
	 * 
	 * **/
	public T1 get(String id) {
		T1 t = dao.get(id);
		return t;
	}

	public void add(T1 t) {
		dao.add(t);
	}

	public void update(T1 t) {
		dao.update(t);
	}
	

}

service层实现:

package test.java.base;

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

import test.java.model.User;


/**
 * @author 作者:jcl
 * @createDate 创建时间:2019年3月25日 上午9:55:42
 */
public class UserService extends CurdService<UserDao,User>{

	public List<User> getList() {
		// TODO Auto-generated method stub
		List<User> list = new ArrayList<User>();
		
		User user = new User();
		user.setAddress("shanghai");
		user.setAddress("12");
		user.setUsername("test");
		user.setPassword("123");
		list.add(user);
		
		dao.add(user); // 实现service基类中的方法
		dao.getChange(); // 自定义方法
		
		/**
		 * 这样就可以在每个业务实现的dao,service层实现service,dao的基类
		 * 避免了写每层业务的增删改查,实现了代码的简化
		 * */
		
		return list;
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值