싱글턴 패턴(Singleton Pattern)
2016. 11. 12. 18:11ㆍProgramming/Java
싱글턴 패턴(Singleton Pattern)
:하나의 인스턴스를 전역적으로 사용하는 것
<예제>
시나리오: 한 부자의 집에 도둑이 연달아 들어와 돈(money)를 털어감
<SingletonClass: 부자>
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 | public class SingletonClass { private static SingletonClass SINGLETON_CLASS_INSTANCE = new SingletonClass(); public int money = 10000; private SingletonClass(){ //외부에서 객체 생성 못 하도록 생성자를 private으로 지정 //getSingletonClass() 통해서만 객체 불러올 수 있음 } public static SingletonClass getSingletonClass(){ if(SINGLETON_CLASS_INSTANCE == null){ SINGLETON_CLASS_INSTANCE = new SingletonClass(); } return SINGLETON_CLASS_INSTANCE; } public int getMoney(){ return money; } public void setMoney(int money){ this.money=money; } } | cs |
<첫 번째 도둑이 5000 털어감>
1 2 3 4 5 6 | public class FirstThief { public void steal(){ SingletonClass single = SingletonClass.getSingletonClass(); single.setMoney(single.getMoney()-5000); } } | cs |
<두 번째 도둑이 또 5000 털어감>
1 2 3 4 5 6 | public class SecondThief { public void steal(){ SingletonClass single = SingletonClass.getSingletonClass(); single.setMoney(single.getMoney()-5000); } } | cs |
<실행 클래스>
1 2 3 4 5 6 7 8 9 10 11 12 | public class Main { public static void main(String[] args) { SingletonClass single = SingletonClass.getSingletonClass(); System.out.println("초기 자금 : "+single.getMoney()); FirstThief ft = new FirstThief(); ft.steal(); System.out.println("첫번째 강탈 후 :"+single.getMoney()); SecondThief st = new SecondThief(); st.steal(); System.out.println("두번째 강탈 후 :"+single.getMoney()); } } | cs |
<결과 출력>
초기 자금 : 10000
첫번째 강탈 후 : 5000
두번째 강탈 후 : 0
'Programming > Java' 카테고리의 다른 글
유용한 API(Calendar, Timer, StringTokenizer) (0) | 2016.11.12 |
---|---|
HashMap 출력법 3가지 (0) | 2016.11.07 |
Day 27(9/8) TcpipServer (0) | 2016.09.09 |
Day 26(9/7) TcpipClient (0) | 2016.09.08 |
Day 25(9/6) 메모장 만들기 (0) | 2016.09.06 |