课程地址:面向抽象(接口)编程的好处就是灵活性
面向抽象(接口)编程的好处就是灵活性
例子:
对于一个User的JavaBean,对他进行保存。
其中有这几个包
cn.edu.hpu.model:存放实体类
cn.edu.hpu.Service:存放业务类
cn.edu.hpu.Dao:存放数据库连接类
如果要实现可以结合多个数据库的功能该怎么写比较灵活?用面向抽象的思想:
UserService:
1. package cn.edu.hpu.service;
4. import cn.edu.hpu.dao.UserDao;
5. import cn.edu.hpu.dao.UserDaoImpl;
6. import cn.edu.hpu.model.User;
9. public class UserService {
10. //Service完成的和Dao功能类似,为什么还要Service层呢?
11. //原因是Service这个层次完成功能除了把数据存储到数据库之外呢
12. //还可以完成“认证”等一些必要的业务功能,UserService对外
13. //公开的只是业务逻辑,而UserDao单纯的负责和数据库打交道
14. private UserDao userDao= new UserDaoImpl();
16. public UserDao getUserDao() {
17. return userDao;
18. }
21. public void setUserDao(UserDao userDao) {
22. this.userDao = userDao;
23. }
26. public void add(User u){
27. this.userDao.save(u);
28. }
29. }
UserDao:
1. package cn.edu.hpu.dao;
4. import cn.edu.hpu.model.User;
7. public interface UserDao {
8. //将Dao设置为接口,然后写Dao的Impl(实现)
9. //这样可以多写几个Impl,就可以实现多数据库的连接
10. //MySQLDaoImpl、SqlServerDaoImpl
11. //这就叫做面向抽象编程(原来是死的,没有灵活性)
12. public void save(User u);
13. }
其中一个Impl
UserDaoImpl:
1. package cn.edu.hpu.dao;
4. import cn.edu.hpu.model.User;
7. public class UserDaoImpl implements UserDao{
10. public void save(User u) {
11. //可以写任意的数据库连接代码
13. }
16. }
用大白话来说,你们家要想装修,墙要用壁纸,你要说用死了,我要用强生的壁纸,那你永远只能用强生的了,你要说我用符合国家某种规格的壁纸,那么你想换谁家的都可以。所以这就是灵活性
网友评论