본문 바로가기

Programming/Design Pattern

Design pattern - Singleton (디자인패턴 - 싱글턴)

Design pattern - Singleton (디자인패턴 - 싱글턴)



 It's used alot because it's easy to use. Example would be written in Java or C++, maybe in Java. And it's simple if you understand the whole context. If you wonder the classdiagram, then just search.


 Important things..


1. It's the only instance using specific class, in heap memory


2. This class has a self instance as a attribute(static)


3. Private constructor in the class, so cannot make new instance in other region




 쓰기도 간편하고 쓰면 코딩하기가 쉬워지는 경향이 있어서 많이 쓰이는 패턴인 것 같다.


예제는 자바나 C++ 아마도 자바로 쓰게 될 것 같고.. 이해만 하면 사실 별 내용이 없는 패턴


클래스다이어그램 등이 궁금하면 검색 ㄱㄱ



중요한 내용은..


1. 해당 클래스의 객체가 메모리에 딱 1개 할당되어 있음을 보장하도록 한 구조


2. 해당 클래스의 속성으로 자기자신의 인스턴스를 갖고 있음(static)


3. 생성자의 가시성을 private으로 해놓아서 외부에서 따로 생성 불가능



쓰다보니 조심해야할 것 같은 내용으로는..


 static 으로 보통 configuration, parameter 등으로 쓰이는 내용들을 싹 넣어서

최초에 heap에 할당해놓고 불러다가 썼었는데, 큰 데이터(이미지 등)이 쌓이면

안될 것 같은 느낌이다



 Java 에서는 enum class 를 지원해서 요새는 enum class 를 쓰는데 더 낫다고 한다.

이 내용은 내일이나 뭐 다음번에 다시 올려야겠다 ( 여기 올림! )





Code.... let me see code!!!!!!!!!!!!!


코드... 코드를 보자!!!!!!!!!!!





public class TestSingleton {

//test attribute

private int testInteger;

//one instance(only)

private static TestSingleton instance = null;

//private default constructor *

private TestSingleton() {

this.testInteger = 100;

};

//static method for calling instance(only)

public static TestSingleton getInstance() {

if (instance == null) {

instance = new TestSingleton();

}

return instance;

}

//test method

public int getTestInteger() {

return this.testInteger;

}

//e.g.

public static void main(String args[]) {


System.out.println(TestSingleton.getInstance().getTestInteger());

}

}



Something else...



2018/10/11 - [Programming/Java] - Java parse double dataType after dot, 자바 소수점 이하 출력개수 조절

2018/10/11 - [Computer general/Windows] - Windows 10에서 부팅시 계정 암호를 입력하지 않는 방법(How to Skip the Windows 10 Login Screen and Login)

2018/10/10 - [Computer general/Windows] - GPU Graphic card performance benchmark 그래픽카드 퍼포먼스 벤치마크 (NVidia etc..)



2018/10/08 - [Algorithm/Code Signal (Code Fights)] - Aracade Intro #12 SortByHeight

2018/10/06 - [Algorithm/Code Signal (Code Fights)] - Aracade Intro #11 IsLucky

2018/10/03 - [Algorithm/Code Signal (Code Fights)] - Aracade Intro #10 CommonCharacterCount



2018/10/02 - [Programming/Image Processing] - OpenCV Java/C++ FourierFastTransferShift(fftshift) 푸리에 변환 후 위치 재설정 함수 (Matlab - fftshift) - (1)