Spring 学习 -- 面向抽象编程(模拟 Spring 的简单实现)
小巫学习 SSH 三个框架可谓是有一番苦水,到目前为止该忘了都忘了,不该忘的也忘了。我的学习方法是看教 Java 开源项目【ali1024.coding.net/public/P7/Java/git】 学视频,我看的是尚学堂的 Struts2、Hibernate、Spring 的视频,马老师讲课不错的啦,建议想学 J2EE 的童鞋都去听听。
我学习框架的目的也是为了窥探它们之间所用到的编程思想和架构理念,也并不是完全为了工作,况且小巫比较擅长的是移动平台,也就是 Android 平台下的开发。好了,废话不多说,下面做一下笔记,学习 Spring 的开端,模拟一下 Spring 的实现。
项目结构如下:
如何思考?面向抽象编程?
先来看看一个序列图
从以上看出了什么?初学的,能看得出是什么才怪,那不管它了。看看具体实现吧
首先要建立一个实体类:User,放在 model 包下
package com.wwj.model;
/**
实体类
@author wwj
Spring
*/
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
下面就是叫你如何面向抽象编程,简单来说如何面向接口编程,下面定义一个接口
package com.wwj.dao;
import com.wwj.model.User;
/**
面向抽象编程
@author wwj
优点:增加了灵活性
*/
public interface UserDAO {
public void save(User user);
}
可以很清楚看到,这个接口声明了一个方法,save 方法,里面有一个参数 User 对象,我们可以想到它是可以用来保存 User 对象到数据库里去的。
把具体实现交给实现类
package com.wwj.dao.impl;
import com.wwj.dao.UserDAO;
import com.wwj.model.User;
/**
接口实现类
@author wwj
*/
public class UserDAOImpl implements UserDAO{
@Override
public void save(User user) {
System.out.println("save user");
}
}
这样做的好处是,如果你要更换数据库环境,你就能灵活定义不同的数据库代码了。
怎么调用以上的方法,为了使业务逻辑和数据库操作分离开,我们需要定义一个业务逻辑类
package com.wwj.service;
import com.wwj.dao.UserDAO;
import com.wwj.dao.impl.UserDAOImpl;
import com.wwj.model.User;
/**
服务类,实现业务逻辑
@author wwj
*/
public class UserService {
private UserDAO userDAO;
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(User 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 DAO userDAO) {
this.userDAO = userDAO;
}
public void add(User user) {
this.userDAO.save(user);
}
}
总结
本文从基础到高级再到实战,由浅入深,把 MySQL 讲的清清楚楚,明明白白,这应该是我目前为止看到过最好的有关 MySQL 的学习笔记了,我相信如果你把这份笔记认真看完后,无论是工作中碰到的问题还是被面试官问到的问题都能迎刃而解!
MySQL50 道高频面试题整理:
评论