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

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

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

例子:
对于一个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.  }  

用大白话来说,你们家要想装修,墙要用壁纸,你要说用死了,我要用强生的壁纸,那你永远只能用强生的了,你要说我用符合国家某种规格的壁纸,那么你想换谁家的都可以。所以这就是灵活性
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。