springNotexx - juedaiyuer/researchNote GitHub Wiki
#用户注册案例#
首先实现简单的在内存中持久化用户信息
package userDemo;
public class user {
private Long id;
private String name;
private String password;
private String group;
public user(String name,String password)
{
this.name = name;
this.password = password;
}
//相应的get/set方法
public String getName(){
return name;
}
}
package userDemo;
import java.util.HashMap;
import java.util.Map;
/**
* 1. 用户持久化类,在内存中保存和获取user对象
* */
public class memoryUserPersist {
private static Map users = new HashMap();
static{
user defaultAdmin = new user("rose","pass");
users.put(defaultAdmin.getName(), defaultAdmin);
}
public memoryUserPersist(){}
public void saveUser(user adduser){
users.put(adduser.getName(),adduser);
}
public user LoadUser(String userName){
return (user)users.get(userName);
}
}
package userDemo;
public class userRegister {
public static void main(String[] args) {
// TODO Auto-generated method stub
memoryUserPersist test = new memoryUserPersist();
user user1 = new user("bill","123");
user user2 = new user("elon","234");
test.saveUser(user1);
test.saveUser(user2);
System.out.println(test.LoadUser("bill"));
System.out.println(test.LoadUser("elon"));
}
}
重构第一步
采用接口的方式
定义了save和load两种行为,具体的持久化必须继承该接口
package userDemoWithInterface;
public interface UserDao {
public void save(User user);
public User load(String name);
}
实现一个内存持久化的用户类
package userDemoWithInterface;
import java.util.HashMap;
import java.util.Map;
public class MemoryUserDao implements UserDao{
private static Map users = new HashMap();
static{
User user = new User("rose","pass");
users.put(user.getName() , user);
}
@Override
public void save(User user) {
users.put(user.getName(), user);
}
@Override
public User load(String name) {
return (User)users.get(name );
}
}
以上虽然实现了多态技术,userDao接口调用了子类对象MemoryUserDao,但是userDao对象的创建却依赖于具体的实现类.如何才能实现客户端依赖具体实现类的问题
工厂模式
package userDemoWithInterface;
public class UserDaoFactory {
public static UserDao createUserDao()
{
return new MemoryUserDao();
}
}
重构:IoC
#source#
百度云:/码农/6年javaEE开发的Word资料合集/java-Spring教程.docx