싱글톤 패턴

it/디자인패턴 2021. 4. 6. 02:04 Posted by 하얀나다

어떠한 객체가 유일하게 존재 할때 사용 하는것.

 

JDBC Connection, Login 정보 등 1개의 정보로 공유 해야하는것에 사용

 

Login User 

 

1. 자기 자신을 객체로 가지고 있어야 하며

2. 기본생성자를 가지고 생성 하는 행위를 막아야함

3. static 메소드를 통해 getInstance() 메소드를 제공해야함.

 

public class LoginUser {

    // 1.자기자신을 객체로 가지고 있어야 하고
    private static LoginUser loginUser = null;
    // 2. 생성자를 가지고 생성 하는 행위를 막아야함
    private LoginUser (){

    }
    // 3.static 메소드를 통해 getInstance() 인스턴스 메소드를 제공해야함
    public static LoginUser getInstance(){

        if(loginUser == null){
            loginUser = new LoginUser();
        }

        return loginUser;
    }
}

위의 LoginUser Class는 유일 하게 존재함

 

이를 사용하고자 하면

 

LoginUser a = new LoginUser()

가 아닌 

private LoginUser loginUser;

public APage(){
    this.loginUser = LoginUser.getInstance();
}

public LoginUser getLoginUser(){
    return this.loginUser;
}

위와 같이 getInstance 라는 인스턴스 메소드로 불러 와야함

 

한번 로그인이 되면 같은 유저 정보를 계속 봐야지 유정정보가 필요할때마다 다시 로그인 하진 않음.

 

만약 해당 정보를 Main.java 에서 실행하고 싶다면

 

APage aPage = new APage();
LoginUser aLoginUser = aPage.getLoginUser();