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