숨 참고 JAVA 다이브 🌊 (15) - 싱글톤 디자인패턴

joyfulwave·2022년 8월 19일
0

숨 참고 JAVA 다이브

목록 보기
15/21

어려울 거 같아서 미뤄뒀던 프로그래밍 공부 이번에 숨 딱 참고 Java 다이브 💦


💡. SingleTon 디자인 패턴

📎 디자인 패턴

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

📎 SingleTon 디자인 패턴

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

⚫️ SingleTon 객체의 이점

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

⚫️ SingleTon 특징

  • static이 적용된 자원은 메모리의 고정영역에 생성되기 때문에, 클래스 자체의 객체나, 그 안에 포함된 멤버변수, 메서드와는 메모리 상에서 구별된다고 볼 수 있다. 그러므로 SingleTon이 정의된 클래스 안에 static 형태로 클래스의 객체를 정의하더라도 코드상의 논리적인 연관관계를 위해 하나의 파일에서 정의하는 것일뿐, 실제로는 해당 클래스 자체에서 독립된 객체가 되는 것이에요.
  • SingleTon이 정의된 클래스 의외의 여러 곳에서 new 연산자를 사용하여 객체 할당이 가능하다면 SingleTon 이라는 개념 자체가 성립되지 않으므로, 외부에서 이 객체에 직접적인 접근을 못하도록 private로 은닉시켜야해요.

⚫️ SingleTon 만들기 예제

public class Calc {
	//-------싱글톤 객체 생성을 위한 준비 시작
	
	private static Calc current;
	
	// 객체가 할당되지 않은 경우에만 할당하도록 하여 중복 할당을 방지한다.
	public static Calc getInstance() {
		
		if( current == null ) {
			current = new Calc();
		}
		
		return current;
		
	}
	
	// 객체에 null 대입하면 메모리에서 삭제된다.
	public static void freeInstance() {
		current = null;
	}
	
	// 기본 생성자를 private 형태로 정의하면 객체 생성자가 은닉 처리되어
	// 외부에서 new 연산자를 사용한 객체할당이 금지된다.
	private Calc(){
		
	}
	
	//-------싱글톤 객체 생성을 위한 준비 끝

	public int plus(int x, int y) {
		return x + y;
	}
	 
	public int minus(int x, int y) {
		return x - y;
	}	
		
}

⚫️ SingleTon 사용 예제

getInstance() 메소드를 통해 객체를 불러올 수 있어요.

public class Main02 {

	public static void main(String[] args) {		
		Calc c = Calc.getInstance();
		int e = c.plus(20, 10);
		
		System.out.println(e);
		System.out.println(Calc.getInstance().minus(20, 10));
	}

}



다음 다이브에서 또 만나요 🌊




출처
https://media.giphy.com/media/l2Je1bFuOpkNpyqYM/giphy.gif
https://media.giphy.com/media/Jbb3KS22397YQ/giphy.gif

0개의 댓글