首页 > 解决方案 > How do I pass class object to singleton class?

问题描述

How do I pass the Users class object to the DataCenter class?

I have 2 classes called DataCenter and Users

The DataCenter is a singleton class.

Inside this DataCenter class, I have an ArrayList called "accounts"

accounts ArrayList have Users class objects.

Inside the Users class, I have 2 ArrayList

1- username

2- password

"username" and "password" ArrayList have login details

From the main class, I'll pass a username and password to DataCenter

It need to validate by checking the ArrayList.

Users.java

import java.util.ArrayList;

public class Users {

    private DataCenter instance = DataCenter.getInstance();
    
    private ArrayList<String> username = new ArrayList<String>();
    private ArrayList<String> password = new ArrayList<String>();
    private ArrayList<String> name = new ArrayList<String>();

    private String accUsername;
    private String accPassword;
    private String accName;

    public Users() {
        username.add("12345678");
        password.add("12345678");
        name.add("John Doe");
    }
    
    public void setUsername(String inputUsername) {
        this.accUsername = inputUsername;
    }

    public void setPassword(String inputPassword) {
        this.accPassword = inputPassword;
    }

    public void setName(String inputName) {
        this.accName = inputName;
    }

    public String getUserName() {
        return accUsername;
    }

    public String getPassword() {
        return accPassword;
    }

    public String getName() {
        return accName;
    }
}

DataCenter.java

import java.util.ArrayList;

public class DataCenter {

    private static DataCenter dc = null;

    private ArrayList<Users> accounts = new ArrayList<Users>();

    private DataCenter() {

    }

    public static DataCenter getInstance() {
        if (dc == null) {
            dc = new DataCenter();
        }
        return dc;

    }

    public void setUsers(Users ac) {
        synchronized (accounts) {
            accounts.add(ac);
        }
    }

    public ArrayList<Users> getUsers() {
        return accounts;
    }

    // login auth check
    public boolean accountValidation(String loginUsername, String loginPassword) {

        boolean valid = false;
        for (int i = 0; i < accounts.size(); i++) {
            if (accounts.get(i).getUserName().equals(loginUsername) && accounts.get(i).getPassword().equals(loginPassword)) {
                valid = true;
                break;
            } else {
                valid = false;
            }
        }
        return valid;
    }

}

Main.java

public class Main{

    public static void main(String[] args) {
        
        DataCenter instance = DataCenter.getInstance();
        
        System.out.println(instance.accountValidation("12345678", "12345678"));

    }

}

标签: java

解决方案


推荐阅读