Java學習筆記之系統登入例項
阿新 • • 發佈:2018-12-25
Java學習已經有一陣了,咱們也應該真刀真槍幹一波試試。我們考慮做一個系統登入認證,就是輸入使用者名稱和密碼,程式返回是否驗證通過的結果。
咱們來分析一下這個程式,首先我們通過介面輸入帳號密碼,程式接收到這兩個引數,然後判斷是否驗證通過,通過則返回 “XXX,您好!”,不通過則返回“對不起,您的帳號或密碼輸入有誤!”
public class LoginDemo {
public static void main(String[] args) {
if(args.length!=2){
System.out.println("輸入引數有誤!" );
System.out.println("格式:使用者名稱 密碼");
System.exit(1); // 系統退出
}
String name = args[0];
String password = args[1];
if(name.equals("zhangsan") && password.equals("sanzhang")){
System.out.println("您好," + name);
}else{
System. out.println("對不起,帳號或密碼輸入有誤!");
}
}
}
上面的程式碼確實可以實現這個功能,但是判斷使用者名稱密碼是否正確這個環節不應該出現在主程式裡,參考下圖。
主程式可以理解為刷卡的這個人,人(主程式)關心的是結果,只關心是否成功,而來做資訊判斷的是刷卡器,不是人,因此我們應該將這部分判斷的功能抽離出來,作為一個單獨的功能模組,也就是一個專門完成驗證功能的類。另外,有了專門驗證的類,我們還需要一個功能,就是執行把門卡放到刷卡器的這一步,也就是傳遞資訊的類。於是,我們重寫上面的程式碼 如下:
class Check{ // 輸出判斷結果的類
public boolean validate(String name, String password){
if(name.equals("zhangsan") && password.equals("sanzhang")){
return true;
}else{
return false;
}
}
}
class Operate{ // 呼叫具體驗證的操作類,這個類的作用就是相當於拿卡(獲取使用者資訊)去刷(驗證)
private String info[]; // 接收全部引數
public Operate(String info[]){
this.info = info;
}
public String login(){
Check check = new Check(); // 例項化 Check 物件
this.isExit(); // 判斷傳入引數是否準確
String str = null;
String name = info[0];
String password = info[1];
if(check.validate(name, password)){
str = "您好," + name + ", 歡迎光臨!";
}else{
str = "對不起,帳號密碼錯誤!";
}
return str;
}
public void isExit(){
if(this.info.length!=2){
System.out.println("輸入引數格式不對!");
System.out.println("格式:使用者名稱 密碼");
System.exit(1); // 系統退出
}
}
}
public class LoginDemo {
public static void main(String[] args) {
Operate opr = new Operate(args); // 例項化操作類的物件
System.out.println(opr.login()); //
}
}