[CHAPTER 4] 실무 활용 패턴 (중) + 과제
스터디/[STUDY] OOP2017. 5. 14. 16:13
지난 스터디에서 다룬 Singleton 은 Instance 를 한 개로 제한함을 알 수 있었습니다.
이를 이용해서 우리는 Instance 를 두개로 제한하는 아래와 같은 Doubleton 을 구현할 수 있었습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | enum Doubleton { SINGLE("1번 인스턴스"), DOUBLE("2번 인스턴스"); public static Main.Doubleton GetInstance() { // 토글 a = (a + 1) % 2; Doubleton result = null; switch (a) { case 0: result = DOUBLE; break; case 1: result = SINGLE; break; default: new RuntimeException(String.format("[에러] 예상못한 TOGGLE 변수 : %d", a)); } return result; } private static int a = 0; private String toStringMessage; Doubleton(String toStringMessage) { this.toStringMessage = toStringMessage; } @Override public String toString(){ return toStringMessage; } } // TEST CODE for (int i = 0; i < 100000; ++i) { new Thread(() -> { String message = Doubleton.GetInstance().toString(); System.out.println(message); }). start(); } // CONSOLE LOG // 1번 인스턴스 // 2번 인스턴스 // 1번 인스턴스 // 2번 인스턴스 // 1번 인스턴스 // ......... | cs |
하지만 아쉽게도 enum 이용한 Doubleton 은 Instance 의 갯수를 동적을 조절할 수 없어보이네요.
우리는 Instance 의 개수를 동적으로 조절할 수 있는 Multiton 을 만들어보는 것이 목적입니다.
아래와 같이 동적으로 미리 Instance 개수를 입력받도록 세팅을 먼저 했으면 좋겠습니다.
물론 Thread-safe 도 보장하면 좋겠죠?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Multiton.SetInstanceCount(5); for (int i = 0; i < 100000; ++i) { new Thread(() -> { String message = Multiton.GetInstance().toString(); System.out.println(message); }).start(); } // CONSOLE LOG // 1번 인스턴스 // 2번 인스턴스 // 3번 인스턴스 // 4번 인스턴스 // ..... | cs |
그럼 우리 스터디 멤버들 파이팅!!!! :-)
반응형
'스터디 > [STUDY] OOP' 카테고리의 다른 글
[CHAPTER 4] 실무 활용 패턴 (중) + 과제리뷰 (0) | 2017.05.20 |
---|---|
[CHAPTER 5] 실무 활용 패턴 (하) (0) | 2017.05.18 |
[ChAPTER 4] 실무 활용 패턴 (중) [Singleton 패턴] + 추가내용 (0) | 2017.05.14 |
[CHAPTER 3] 실무 활용 패턴 (상)[Template method 패턴] + 추가내용 (0) | 2017.05.13 |
[CHAPTER 4] 실무 활용 패턴 (중) (0) | 2017.05.08 |