20.03 ~ 20.08 국비교육/JAVA

싱글톤(Singletone pattern), final

찹키리 2020. 3. 22. 19:24

<싱글톤(singletone pattern)>


: 영역은 하나인데, 해당 영역을 사용하는 변수가 두 개 이상인 경우를 말한다.

->static 영역은 최초 한 번만 메모리를 할당하고 그 메모리에 객체를 만들어 사용하는데(메소드와 변수는 인스턴스를 생성하지 않고 즉시 사용), 이 경우 해당 영역을 사용하는 변수가 두 개 이상이 되면 메소드를 처리할 마다 변수, 함수가 날아가버린다(사용하고 버려짐). 순차적으로 작업을 처리할 때 주로 사용한다.(stateless <-> stateful)

ex. 한 반의 30명의 학생들의 성적을 한 번에 처리할 수 있다.

-장점: 메모리를 획기적으로 줄일 수 있다.

-단점: 이전의 상태로 되돌아갈 수 없다.

 

 

<예제>

 

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
 
class StaticClass2 {
    public static StaticClass2 sc = null// 클래스 변수
    int kuk = 100// 멤버 변수
 
    public static StaticClass2 getInstance() {
        if(sc == null) {
            sc = new StaticClass2(); // 인스턴스 생성하라
        }
        return sc;
    }
}
 
public class StaticClassMain2 {
    public static void main(String args[]) {
        StaticClass2 sc = new StaticClass2();
        StaticClass2 sc2 = new StaticClass2();
 
        System.out.println("sc.hashCode: " + sc.hashCode);
        sc.kuk = 1000;
        System.out.println("sc.kuk: " + sc.kuk);
        System.out.println("sc2.hashCode: " + sc2.hashCode);
        sc2.kuk = 1500;
        System.out.println("sc2.kuk: " + sc2.kuk);
        System.out.println("sc.kuk: " + sc.kuk);
 
        System.out.println("--------------------");
        StaticClass2 sc3 = StaticClass2.getIstance();
        StaticClass2 sc4 = StaticClass2.getInstance(); // 같은 곳을 가리킨다.
        System.out.println("sc3.hashCode: " + sc3.hashCode);
        sc3.kuk = 2000;
        System.out.println("sc3.kuk: " + sc3.kuk);
        System.out.println("sc4.hashCode: " + sc4.hashCode);
        sc4.kuk = 2500;
        System.out.println("sc4.kuk: " + sc4.kuk);
        System.out.println("sc3.kuk: " + sc3.kuk);
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 




<final>

 

: 바꿀 수 없다.

-변수: 상수를 만들 때 -> 변수를 바꿀 수 없는, 의 의미가 된다.
-메소드: 오버라이딩이 되지 않는다.
-클래스: 상속 불가(더 이상 분할 불가, 자손 없음, 가장 말단 클래스가 된다)

 

 

<예제>

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
class Final {
    int money = 20000;
    final int day = 7;
    final int week = 4;
    final int month = 12// 상수
 
    public Final()    {
    }
}
 
public class StaticMain {
    public static void main(String args[]) {
        Final fi = new Final();
        fi.money = 30000;
        System.out.println("1주일 용돈: " + (fi.money * fi.day))
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter