展开全部
1、面向接口(DAO)编程,接口的实现。
构建User.java实体类,构建UserImpl.java类,实现UserDao接口,构建MapDal.java,模e69da5e887aa62616964757a686964616f31333433626534拟数据库,Main.java模拟UI,UI只调用UserImpl,UserImpl调用MapDal。
main.java
package baidu.zhidao;
import java.util.*;
/**
* Main 主方法
* @author bufei
*
*/
public class Main {
public static void main(String[] args) {
int userNum = 9;
// 定义UserList
List list = new ArrayList();
for (int i = 0; i
User user = new User();
user.setPassWord("passWord" + i);
user.setUserName("userName" + i);
list.add(user);
}
// 实例化UserImpl
UserImpl userImpl = new UserImpl(list);
// 用户 张三 是否存在
String userName = "张三";
String passWord = "passWord";
User user = new User();
user.setUserName(userName);
user.setPassWord(passWord);
System.out.println("- - - baiduDemo - - -");
// 1、isExist(user)
System.out.println("查找用户 " + userName + "...");
if (userImpl.isExist(user)) {
System.out.println(userName + " 存在!");
} else {
System.out.println(userName + " 不存在!");
}
// 2、addUser
System.out.println("添加用户 " + userName + ",psw= " + passWord + " ...");
userImpl.addUser(user);
// 3、changePassword(userName)
System.out.println("修改密码...");
passWord = "zhangsanpasword";
if (userImpl.changePassword(userName, passWord)) {
System.out.println("修改成功!");
} else {
System.out.println("用户不存在!");
}
// 4 selectAll()
list = userImpl.selectAll();
System.out.println("获取全部User:");
for (User userItem : list) {
System.out.println(userItem.getUserName() + "," + userItem.getPassWord());
}
}
}
UserImpl.java
package baidu.zhidao;
import java.util.*;
/**
* UserDao接口实现
* @author bufei
*
*/
public class UserImpl implements UserDao {
private MapDal mapDal;
/**
* 构造器,初始化Map数据库
*/
public UserImpl(List list) {
mapDal = new MapDal(list);
}
/**
* 1.判断某个user是否存在
* @param user 用户对象
* @return 返回true/false用户是否存在
*/
public boolean isExist(User user) {
boolean rs = false;
rs = mapDal.isExist(user);
return rs;
}
/**
* 2.添加User
* 题目所给void 返回类型不合理
* @param user
*
* */
public void addUser(User user) {
if (mapDal.addUser(user)) {
System.out.println("添加完成!");
} else {
System.out.println("添加失败!");
}
}
/**
* 3.根据username修改password
* @param username
* @param password
* @return 成功与否
* */
public boolean changePassword(String userName, String password) {
boolean rs = false;
User user = new User();
user.setUserName(userName);
user.setPassWord(password);
rs = mapDal.changePassword(user);
return rs;
}
/**
* 根据用户对象修改密码
* @param user
* @return
*/
public boolean changePassword(User user) {
return mapDal.changePassword(user);
}
/**
* 4.得到所有的User,用List封装
* @return 从数据库查询到所有的User
* */
public List selectAll() {
return mapDal.selectAll();
}
}
MapDal.java
package baidu.zhidao;
import java.util.*;
/**
* MapDml 用map模拟数据库,初始化生成一些User
* 单例模式,避免数据不同步
* @author bufei
*
*/
public class MapDal {
/** list中存map,实在绕得很,直接存User也是可以 */
public static List> userMapList = new ArrayList>();
/**
* 初始化,有参构造器
* 构造Map map,存储全部的userName,passWord,模拟数据库
*
*/
public MapDal(List list) {
for (User user : list) {
Map userMap = new HashMap();
userMap.put(user.getUserName(), user.getPassWord());
userMapList.add(userMap);
}
}
/**
* 无参构造器
* */
public MapDal() {
}
/**
*
* @param user
* @return
*/
public boolean isExist(User user) {
boolean rs = false;
//遍历userMapList 查找用户是否存在
for (Map map : userMapList) {
// 找到该map
if (map.get(user.getUserName()) != null) {
rs = true;
}
}
return rs;
}
/**
* addUser,userName已存在则无法加入
* @param user
* @return boolean
*/
public boolean addUser(User user) {
boolean rs = false;
//遍历userMapList 查找用户是否存在
for (Map map : userMapList) {
// 找到该map,已经存在,无法添加
if (map.get(user.getUserName()) != null) {
return rs;
}
}
if (!rs) {
Map userMap = new HashMap(8);
userMap.put(user.getUserName(), user.getPassWord());
userMapList.add(userMap);
rs = true;
}
return rs;
}
/**
* deleteUser
* @return
*/
public boolean deleteUser() {
boolean rs = false;
return rs;
}
/**
* changePassword
* @param user
* @return
*/
public boolean changePassword(User user) {
boolean rs = false;
// 定义遍历索引
int i = 0;
//遍历userMapList 查找用户是否存在
for (Map map : userMapList) {
// 找到该map,remove,再次存入新的
if (map.get(user.getUserName())!=null) {
userMapList.remove(i);
//hashmap 初试默认值 0.75-16
Map userMap = new HashMap(8);
userMap.put(user.getUserName(), user.getPassWord());
userMapList.add(userMap);
rs = true;
}
i++;
}
return rs;
}
/**
* selectAll()
*
* @return 返回全体user
*/
public List selectAll() {
List list = new ArrayList();
//遍历map
for (Map userMap : userMapList) {
User user = new User();
//map访问需要使用Map.Entry<>
//entry 需要Set.iterator().next()
Set entriSet = userMap.entrySet();
Iterator> iterator = entriSet.iterator();
if (iterator.hasNext()) {
// 此时entry 是 Object
Map.Entry entry = iterator.next();
user.setUserName(entry.getKey().toString());
user.setPassWord(entry.getValue().toString());
list.add(user);
}
}
return list;
}
}
2、运行效果