天天看點

IO實戰篇:使用者登入 | 帶你學《Java語言進階特性》之七十八

上一篇:IO實戰篇:奇偶數統計 | 帶你學《Java語言進階特性》之七十七

本節将帶領讀者實戰使用者登入功能,通過輸入指定的使用者名和密碼簡單實作使用者登入功能來進一步掌握IO相關的知識和其他基本知識。

【本節目标】

通過閱讀本節内容,你将複習到String一些基礎的操作,進一步掌握資料輸入的方法,簡單了解使用者登入功能的基本原理和實作過程,以及程式開發過程中的代理思想。

使用者登入

完成系統登入程式,從指令行輸入使用者名和密碼,如果沒有輸入使用者名和密碼,則提示輸入使用者名和密碼;如果輸入了使用者名但是沒有輸入密碼,則提示使用者輸入密碼,然後判斷使用者名是否是mldn,密碼是否是hello,如果正确,則提示登入成功,如果錯誤,顯示登入失敗的資訊,使用者再次輸入使用者名和密碼,連續3次輸入錯誤後系統退出。

對于此時的程式發現可以将使用者名和密碼同時輸入,也可以先輸入使用者名,而後輸入密碼,如果超過了3次就表示登入結束了。對于使用者名和密碼的使用可以采用“使用者名/密碼”的形式完成,如果發現沒有“/”表示沒有輸入密碼。

1、定義使用者的操作接口

public interface IUserService {
    public boolean isExit();
    public boolean login(String name,String password);
}           

2、定義操作接口的子類

import cn.mldn.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、對于登入失敗的檢測處理操作,應該單獨定義一個使用者的代理操作類。

import cn.mldn.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, pwd)) {  //登入認證
                    return true;  //循環結束了
                }else {
                    System.out.println("登入失敗,錯誤的使用者名或密碼!");
                }
            }
        }
        return false;
    }
    @Override
    public boolean isExit() {
        return this.userService.isExit();
    }
}           

4、修改工廠類定義

import cn.mldn.demo.service.IUserService;
import cn.mldn.demo.service.impl.UserServiceImpl;
import cn.mldn.demo.service.proxy.UserServiceProxy;
public class Factory{
    private Factory() {}
    public static IUserService getInstance() {
        return new UserServiceProxy();
    }
}           

5、定義測試類處理:

public class IOCaseDemo {
    public static void main(String[] args) {
        System.out.println(Factory.getInstance.login(null, null));
    }
}           

執行結果:

IO實戰篇:使用者登入 | 帶你學《Java語言進階特性》之七十八
IO實戰篇:使用者登入 | 帶你學《Java語言進階特性》之七十八
IO實戰篇:使用者登入 | 帶你學《Java語言進階特性》之七十八

真實業務隻實作核心功能,輔助邏輯處理交給代理控制。

想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。

本内容視訊來源于

阿裡雲大學 下一篇:IO實戰篇:投票選舉 | 帶你學《Java語言進階特性》之七十九 更多Java面向對象程式設計文章檢視此處