完成系统登陆程序,从命令行输入用户名和密码,如果没有输入用户名和密码,则提示输入用户名和密码;如果输入了用户名但是没有输入密码,则提示用户输入密码,然后判断用户名是否是mldn,密码是否是hello,如果正却,则提示登陆成功;如果错误显示登陆失败,用户再次输入用户名和密码,连续3此输入错误后系统退出。
对于用户名和密码的使用可以采用“用户名/密码”的形式完成,如果发现没有“/”表示没有输入密码。
1、定义用户操作接口
package demo.service;
public interface IUserService {
public boolean isExit();
public boolean login(String name, String password);
}
2、定义操作接口的子类
package demo.service.impl;
import demo.service.IUserService;
public class UserServiceImpl implements IUserService {
private int count = 0;//作为登陆统计
@Override
public boolean isExit() {
return this.count>=3;
}
@Override
public boolean login(String name, String password) {
this.count++;
return "mldn".equals(name) && "hello".equals(password);
}
}
3、对于登陆失败的检测处理操作,应该单独定义一个用户的代理操作类。
package demo.service.proxy;
import demo.InputUtil;
import demo.service.IUserService;
public class UserServiceProxy implements IUserService {
private IUserService userService;
public UserServiceProxy(IUserService userService) {
this.userService = userService;
}
@Override
public boolean login(String name, String password) {
while (!this.isExit()) {
String inputData = InputUtil.getString("请输入登陆信息:");
if (inputData.contains("/")) {// 输入了用户名和密码
String temp[] = inputData.split("/");
if (this.userService.login(temp[0], temp[1])) {
return true;// 循环结束
}else {
System.out.println("登陆失败,错误的用户名或密码!");
}
} else {//现在只有用户名
String pwd = InputUtil.getString("请输入密码:");
if (this.userService.login(inputData, temp[1])) {
return true;// 循环结束
}else {
System.out.println("登陆失败,错误的用户名或密码!");
}
}
}
return false;
}
@Override
public boolean isExit() {
return this.userService.isExit();
}
}
4、修改工厂类定义
package demo.factory;
import demo.service.IUserService;
import demo.service.impl.UserServiceImpl;
import demo.service.proxy.UserServiceProxy;
public class Factory {
private Factory() {}
public static IUserService getInstance() {
return new UserServiceProxy(new UserServiceImpl());
}
}
5、定义测试类处理
package demo;
import demo.factory.Factory;
public class IOCaseDemo {
public static void main(String[] args) {
System.out.println(Factory.getInstance().login(null, null));
}
}
真实业务实现核心功能,辅助逻辑处理交给代理控制。
参考资料:https://edu.aliyun.com/lesson_1012_9024?spm=5176.10731542.0.0.121ed290ZWHZWw