JavaIO编程案例——用户登录

完成系统登陆程序,从命令行输入用户名和密码,如果没有输入用户名和密码,则提示输入用户名和密码;如果输入了用户名但是没有输入密码,则提示用户输入密码,然后判断用户名是否是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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值