• JavaLogin小框架制作【精品博客】


    做一个小登录接口方法,让用户传入用户名,密码,就可以知道登录的结果信息,并以接口监听的方式控制。


    先看客户端执行效果:
    输入正确:
    这里写图片描述

    输入错误:
    这里写图片描述

    模拟客户端使用登录小框架

    package com.demo1.client;
    
    import java.util.Scanner;
    
    import com.demo1.login.Login;
    import com.demo1.login.LoginInfo;
    import com.demo1.login.LoginState;
    
    /**
     * 模拟客户端程序
     * @author Liudeli
     */
    public class Client {
    
        public static void main(String[] args) {
    
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("请输入用户名  input userName...");
            String userName = scanner.nextLine();
    
            System.out.println("请输入密码  input userPwd...");
            String userPwd = scanner.nextLine();
    
            Login.getInstance()
            .setUserName(userName) // 设置用户名
            .setUserPwd(userPwd) // // 设置密码
            .setOnLoginState(new LoginState() { // 登录状态
    
                public void onLoginSuccess(int loginState) {
                    System.out.println("登录成功 login success ! " + loginState); 
                }
                public void onLoginFail(int loginState) {
                    System.out.println("登录失败 login fail ! " + loginState);
                }
            })
            .setOnLoginInfo(new LoginInfo() { // 登录的信息
    
                public void onLoginUserInfo(String userName, String userPwd, String loginTime) {
                    System.out.println("登录具体信息  userName:" + userName + 
                    " userPwd:" + userPwd + " loginTime:" + loginTime);
                }
            })
            .doLoginCommit();// 最后提交登录命令即可
        }
    }

    Login的具体实现:

    package com.demo1.db;
    
    /**
     * 此类用于模拟数据表(Database)
     * @author Liudeli
     */
    public class UserDB {
    
        /**
         *  模拟用户输入的用户名(本来应该存入数据库中)
         */
        public static final String USER_NAME = "liudeli";
    
        /**
         * 模拟用户输入的密码(本来应该存入数据库中)
         */
        public static final String USER_PWD = "123";
    
    }
    package com.demo1.login;
    
    /**
     * 此接口为登录信息接口
     * @author Liudeli
     */
    public interface LoginInfo {
    
        /**
         * 次方法为登录信息的方法
         * @param userName  用户名称
         * @param userPwd   用户密码 
         * @param loginTime 登录时间
         */
        public void onLoginUserInfo(String userName, String userPwd, String loginTime);
    
    }
    package com.demo1.login;
    
    /**
     * 此接口为登录状态接口
     * @author Liudeli
     */
    public interface LoginState {
    
        /**
         * 登录成功
         * @param loginState 传入登录状态
         */
        public void onLoginSuccess(int loginState);
    
        /**
         * 登录失败
         * @param loginState 传入登陆状态
         */
        public void onLoginFail(int loginState);
    
    }
    package com.demo1.login;
    
    /**
     * 定义登陆接口标准
     * @author Liudeli
     */
    public interface ILogin {
    
        /**
         * 设置用户名
         * @param userName
         * @return 返回当前对象
         */
        public Login setUserName(String userName);
    
        /**
         * 设置用户密码
         * @param userPwd
         * @return 返回当前对象
         */
        public Login setUserPwd(String userPwd);
    
        /**
         * 设置登录状态
         * @param loginState 传入登录状态的实现
         * @return 返回当前对象
         */
        public Login setOnLoginState(LoginState loginState);
    
        /**
         * 设置登录信息
         * @param loginInfo 传入登录信息的实现
         * @return 返回当前对象
         */
        public Login setOnLoginInfo(LoginInfo loginInfo);
    
    
        /**
         * 做最后登录的提交操作(必须为最后调用)
         */
        public void doLoginCommit();
    
    }
    package com.demo1.login;
    
    import com.demo1.db.UserDB;
    
    /**
     * 具体登录业务实现类
     * @author Liudeli
     */
    public class Login implements ILogin{
    
        public static Login login = null;
    
        public static Login getInstance() {
            if (null == login) {
                synchronized (Login.class) {
                    login = new Login();
                }
            }
            return login;
        }
    
        private String userName;
        private String userPwd;
    
        public Login setUserName(String userName) {
            this.userName = userName;
            return this;
        }
    
        public Login setUserPwd(String userPwd) {
            this.userPwd = userPwd;
            return this;
        }
    
        private LoginState loginState;
        private LoginInfo loginInfo;
    
        public Login setOnLoginState(LoginState loginState) {
            this.loginState = loginState;
            return this;
        }
    
        public Login setOnLoginInfo(LoginInfo loginInfo) {
            this.loginInfo = loginInfo;
            return this;
        }
    
        /**
         * 具体登录业务
         */
        public void doLoginCommit() {
    
            if (UserDB.USER_NAME.equals(userName) && UserDB.USER_PWD.equals(userPwd)) {
                loginState.onLoginSuccess(1);
            } else {
                loginState.onLoginFail(0);
            }
            setOnLoginState(loginState);
    
            loginInfo.onLoginUserInfo(userName, userPwd, "2016年12月22日 16:26:10");
            setOnLoginInfo(loginInfo);
        }
    
    }
    

    Project结构:
    这里写图片描述


    以上其实就是使用了一下接口的知识完成一下回调工作,只需在客户端调用Login对象即可。


    谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
    刘德利CSDN博客, http://blog.csdn.net/u011967006

  • 相关阅读:
    JavaScript中的this指向
    JQ延迟对象
    JavaScript事件简述
    1.0 HTML/CSS 优化--《高效前端》学习笔记
    浏览器工作原理(学习笔记)
    this 绑定例外之间接引用
    全局函数是否存在闭包?
    nuxt + vue-i18n 踩坑记录
    继承(学习笔记) —— 《高级教程》
    三、函数作用域和块作用域(学习笔记)—— 《你不知道的JavaScript》
  • 原文地址:https://www.cnblogs.com/android-deli/p/10322208.html
Copyright © 2020-2023  润新知