Java 디자인패턴[ Singleton ]

NasK!m_311·2022년 8월 26일
0

Java

목록 보기
30/39
post-thumbnail

💡 디자인 패턴이란?

-> 소프트웨어를 설계할 때, 특정 맥락에서 자주 발생하는 고질적인 문제들이 발생했을 때 재사용할 수 있는 해결책.


💡 Singleton 디자인 패턴

- 프로그램 내의 여러곳에서 반복적으로 사용되어야 하는 객체에 대해 전역적인 범위를 갖도록 객체를 생성하고,
	이 객체를 여러 곳에서 공유하기 위한 클래스 작성 패턴.
    
    -> 이러한 패턴을 통해 생성된 객체를 싱글톤객체라고 한다.

💡 Singleton 객체의 이점

 1. 프로그램의 전역에서 활용할 재료로 사용되는 공유기능을 하나만 생성하여,
 	여러곳에서 재사용함으로써 메모리를 효율적으로 사용할 수 있다.
    
 
 2. 단 한번만 객체를 생성하면 다시 객체를 생성할 필요가 없기 때문에,
 	해당 기능을 사용할 때마다 객체를 일일이 생성해야 하는 번거로움을 피할 수 있다.

💡 Singleton 객체 준비 방법 예시

 public class Calc{
 	
    private static Calc current;
    
    public static Calc getInstance(){	-> 객체가 할당되지 않은 경우에나 할당하도록 하여
    	if(current == null) {			중복 할당을 방지한다.
        	current = new Calc();
        }
        return current;
    }
    
    public static void frrInstance(){	-> 객체에 null을 대입하면 메모리에서 삭제된다.
    	current = null;
    }
    
    private Calc() {}	-> 기본생성자를 private 형태로 정의하면 객체 생성자가 은닉처리되어
    					외부에서 new 연산자를 사용한 객체 할당이 금지된다.
    
 }	// Calc class
 
 
 -> static이 적용된 자원은 메모리의 고정영역에 생성되기 떄문에,
 클래스 자체의 객체, 멤버변수, 메소드와는 메모리 상에서 구별된다고 볼 수 있다.
 
 -> 그러므로 Calc 클래스 안에 static형태로 Calc 클래스의 객체를 정의하더라도
 코드상의 논리적인 연관관계를 위해 하나의 파일에서 정의하는 것일 뿐,
 실제로는 Calc 클래스 자체에서 독립된 객체가 되는 것이다.
 
 -> Calc 클래스 이외의 여러곳에서 new 연산자를 사용하여 객체 할당이 가능하다면
 Singleton이라는 개념 자체가 성립되지 않으므로,
 외부에서 이 객체에 직접적인 접근을 못하도록 은닉시킨다.

💡 Singleton 객체 사용하기

 Calc c = Calc.getInstance();
 
 
 -> getInstance() 메소드를 사용하여 객체를 리턴 받는 형식으로 사용한다.
 
 -> 여러 객체를 리턴받더라도 모두 하나의 static 객체를 참조하게 되기 때문에,
 전역 객체 하나만이 메모리에 할당되게 된다.
profile
메리아빠, 먹다가 죽어도 되는 개발자.(살뺴자....)

0개의 댓글