21일차 강의 정리
1. 싱글톤 패턴(singleton pattern)
싱글톤패턴은 인스턴스가 사용될 때 똑같은 인스턴스를 만들어 내는 것이 아니라
동일 인스턴스를 여러 곳에서 공유되고 사용할수 있는 것을 말한다.
싱글톤 패턴을 적용한 클래스는 단 하나의 객체만 만들어 질 수 있다.
반드시 디폴트 생성자를 구현 해야한다.
소스
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 | class Am02{ int a=1000; private static Am02 me; private Am02(){ // 반드시 디폴트 생성자를 구현 System.out.println("생성자 호출"); } public static Am02 func1(){ if(me ==null){ me = new Am02(); //생성자 한번만 호출 } return me; }//func1() end }//Am02 class end public class Ex02 { public static void main(String[] args) { // 싱글톤패턴 Am02 me = Am02.func1(); //me 객체생성 Am02 me2 = Am02.func1(); //me2 객체생성 me.a=me.a+100; //me 객체의 a에+100 System.out.println("me의 a= "+me.a); System.out.println("me2의 a= "+me2.a); //me2 객체에 공유가 되서 me와 같은 결과 }//main end }//class end | cs |
결과
소스2 (오버라이드!)
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 55 56 57 | class Am03{ Am03 me; int idx=1; public Am03(int a) { super(); //Object me = this; System.out.println("Am03 디폴트 생성자/a = "+a); } @Override public String toString() { System.out.println(idx); return ""+idx; } }//Am03 class end class Amm03 extends Am03{ //Am03상속 int idx=2; public Amm03() { super(4); System.out.println("Amm03 디폴트 생성자"); } public Amm03(int a) { this(); System.out.println("Amm03 생성자/a ="+a); } public Am03 func01(){ System.out.println("func01()"); return super.me; //객체출력은 toString을 출력..(오버라이드된 값 출력) }; @Override public String toString() { //Am03의 toString 오버라이드 System.out.println("Amm03 idx -> "+idx); return ""+idx; } @Override public boolean equals(Object obj) { return idx==((Am03)obj).idx; } }//Amm03 class end public class Ex03 { public Ex03() { System.out.println("me create"); } public static void main(String[] args) { Amm03 mm= new Amm03(7); System.out.println("--------------------------"); Am03 mm2 = mm.func01(); System.out.println("------------mm--------------"); System.out.println("mm -> "+mm); System.out.println("------------mm2-------------"); System.out.println("mm2 ->"+mm2); System.out.println("--------------------------"); System.out.println(mm2.equals(mm)); }//main end }//class end | cs |
결과2
'* Programming > JAVA' 카테고리의 다른 글
DAY22 컬렉션프레임워크 Vector (0) | 2016.08.03 |
---|---|
DAY21 컬렉션 프레임워크 (0) | 2016.08.03 |
DAY20 Calendar/Date/Random/Arrays Class (0) | 2016.08.02 |
DAY20 Object클래스,리플렉션 (0) | 2016.08.02 |
DAY20 this/super (0) | 2016.08.02 |