CS/소프트웨어공학

[디자인패턴] 싱글톤 Singleton

린예라 2024. 11. 12. 22:56

싱들톤패턴은 클래스 하나가 하나의 인스턴스만을 생성하게 하는 구조이다. (즉 1개를 생성하면 그 이후에는 인스턴스를 생성하지 못해야 한다.)  그리고 전역적으로 이 인스턴스를 공유할 수 있게한다.

 

장점

1.오직 인스턴스 1개만을 사용하게 하기 때문에 메모리를 아낄 수 있다.

2.해당 인스턴스에 대해 전역적으로 쉽게 접근 할 수 있어 공유하기 쉽다.

 

단점

1.결국 객체를 새로 생성하지 않고 기존에 있던 인스턴스에서 가져와야 하기 때문에 의존성이 올라가고, 코드의 유연성이 떨어진다.

2.전역적으로 사용하기 때문에 여기에 상태 값 같은게 들어가면 심각한 오류를 초래할 수도 있다.

3.private 접근제어자로 인하여 자식생성 및 상속이 어렵다.

4.인스턴스를 미리 설정해놓기 때문에 값 수정이 힘들다.

 

구현

아래와 같이 인스턴스를 미리 만들어 놓고 외부에서 접근(변경)하지 못하도록 막아놓는 것이다(불변객체). 혹은 생성자를 통해서만 값을 변경 할 수 있다.

해당 인스턴스에 접근하지 못하게 값을 반환하는 getter만 설정하고 setter는 설정하지 않는다.


public class singleInstance {
    // 클래스 내부에 자신의 인스턴스를 정적 변수로 유지
    private static singleInstance instance;

    // 멤버변수 name, age
    private final String name;
    private final String age;

    // private 생성자를 사용하여 외부에서 인스턴스화하지 못하도록 방지
    // 처음부터 값을 정하거나, 생성자를 통해서만 멤버변수에 값을 설정 할 수 있다.
    private singleInstance(String name, String age) {
        this.name = name;
        this.age = age;
    }

    // 인스턴스를 반환하는 정적 메소드
   // 만약 인스턴스가 존재하지 않는다면, 인스턴스를 생성한다
    public singleInstance getInstance() {
        if (instance == null) {
            instance = new singleInstance(name, age); // 처음 호출될 때만 인스턴스 생성
        }
        return instance;
    }
}

 

 

'CS > 소프트웨어공학' 카테고리의 다른 글

애자일 선언 (Agile Manifesto)  (0) 2024.11.21
디자인 패턴 (Design Pattern)이란?  (0) 2024.04.17