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/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
'Programming > Design Pattern ' 카테고리의 다른 글
Design pattern - Prototype (디자인패턴 - 프로토타입) / Java C++ C# (0) | 2018.10.19 |
---|