본문 바로가기

# 02/Java

[Java] 싱글턴 패턴

반응형

mvp 패턴에 대해 공부하다보니 싱글턴 패턴과 RxJava가 나왔다.

일단 싱글턴패턴 공부하고

RxJava 공부하고 mvp 패턴 공부해야지......


싱글턴패턴이란..


public class Singleton {


// private이라 외부에서 접근못하고 static 이라 클래스가 로드(프로그램 실행)되면서 변수생성 final이라 변경 안됨 

private static final Singleton gInstance = new Singleton();


public String strHakBun = "201000000";


// 생성자 - private이라 접근 못함

private Singleton() {

}


// 우리가 제공해주는 이 클래스의 인스턴스를 사용하는 유일한 방법

public static Singleton getInstance() {

return gInstance;

}

}


// 외부클래스에서 접근 가능!!

public class Main {

public static void main(String[] args) {

System.out.println( Singleton.getInstance().strHakBun );

}

}



객체 - 속성과 기능을 갖춘 것                                 - 자동차

클래스 - 속성과 기능을 정의한 것                           - 자동차의 설계도

인스턴스 - 속성과 기능을 가진 것 중 실제 하는 것      - 자동차 하나하나 완성품



싱글톤 패턴을 통해서 하나의 인스턴스만 생성하도록 구현 할 수 있다.


싱글톤 패턴 - 하나만 생성해야할 객체를 위한 패턴



요구 사항 - 개발 중이 시스템에서 스피커에 접근 할 수 있는 클래스를 만들어 주세요



public class SystemSpeaker {


static private SystemSpeaker instance;


private int volume;


// 외부에서 생성자 사용못하게..

private SystemSpeaker() {

volume = 5;

}


public static SystemSpeaker getInstance() {

if ( instance == null ) {

instance = new SystemSpeaker();

}

return instance;

}


public int getVolume() {

return volume;

}


public int setVolume(int volume) {

this.volume = volume;

}

}




public class Main {

public static void main(String[] args) {


SystemSpeaker speaker1 = SystemSpeaker.getInstance();

SystemSpeaker speaker2 = SystemSpeaker.getInstance();


System.out.println( speaker1.getVolume() ); 

System.out.println( speaker2.getVolume() ); 


speaker1.setVolume(11);

System.out.println( speaker1.getVolume() ); 

System.out.println( speaker2.getVolume() );



speaker2.setVolume(22);

System.out.println( speaker1.getVolume() ); 

System.out.println( speaker2.getVolume() ); 


}

}



반응형