【spring框架2】什么是面向抽象(接口)编程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/u013517797/article/details/43565189

面向抽象(接口)编程的好处就是灵活性


例子:
对于一个User的JavaBean,对他进行保存。
其中有这几个包
cn.edu.hpu.model:存放实体类
cn.edu.hpu.Service:存放业务类
cn.edu.hpu.Dao:存放数据库连接类


如果要实现可以结合多个数据库的功能该怎么写比较灵活?用面向抽象的思想:
UserService:

package cn.edu.hpu.service;
 
 
import cn.edu.hpu.dao.UserDao;
import cn.edu.hpu.dao.UserDaoImpl;
import cn.edu.hpu.model.User;
 
 
public class UserService {
//Service完成的和Dao功能类似,为什么还要Service层呢?
//原因是Service这个层次完成功能除了把数据存储到数据库之外呢
//还可以完成“认证”等一些必要的业务功能,UserService对外
//公开的只是业务逻辑,而UserDao单纯的负责和数据库打交道
	private UserDao userDao= new UserDaoImpl();
	
	public UserDao getUserDao() {
		return userDao;
	}
 
 
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
 
 
	public void add(User u){
		this.userDao.save(u);
	}
}

UserDao:

package cn.edu.hpu.dao;
 
 
import cn.edu.hpu.model.User;
 
 
public interface UserDao {
	//将Dao设置为接口,然后写Dao的Impl(实现)
	//这样可以多写几个Impl,就可以实现多数据库的连接
	//MySQLDaoImpl、SqlServerDaoImpl
	//这就叫做面向抽象编程(原来是死的,没有灵活性)
	public void save(User u);
}

其中一个Impl
UserDaoImpl:

package cn.edu.hpu.dao;
 
 
import cn.edu.hpu.model.User;
 
 
public class UserDaoImpl implements UserDao{
 
 
	public void save(User u) {
		//可以写任意的数据库连接代码
		
	}
 
 
}

用大白话来说,你们家要想装修,墙要用壁纸,你要说用死了,我要用强生的壁纸,那你永远只能用强生的了,你要说我用符合国家某种规格的壁纸,那么你想换谁家的都可以。所以这就是灵活性。

 

转载请注明出处:http://blog.youkuaiyun.com/acmman

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值