simDev1234
심플하고 차분하게
simDev1234
전체 방문자
오늘
어제
  • 분류 전체보기
    • Computer Science
      • Basic Math
      • Data Structure
      • Algorithm
      • Database
      • OS
    • Language
      • Java
      • Kotlin
      • SQL
    • Framework
      • Spring
      • Orm&Mapper
      • 프로젝트로 스프링 이해하기
      • 스프링 라이브러리
    • Infra
      • Cloud
      • Docker
      • Redis
      • AWS, Azure
      • Device
    • Etc
      • CleanCoding
    • Git,Github

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • null
  • 자바프로그램
  • 자바프로그래밍
  • JVM메모리구조
  • 참조변수
  • 스프링
  • 참조타입
  • 자바
  • controllerTest
  • 자바메모리구조
  • 컨트롤러
  • 404
  • scanner #next() #nextLine()

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
simDev1234

심플하고 차분하게

[자바_문법] 디자인패턴_싱글톤(Singleton)
Language/Java

[자바_문법] 디자인패턴_싱글톤(Singleton)

2022. 3. 15. 14:11

[ Single-ton 의 원리]

- 프로그램이 시작되었을 때 클래스변수, 클래스메서드가 메서드영역(클래스영역)에 적재되는 것을 응용
- 단순히 기능만 제공하는 서비스 객체(클래스)의 인스턴스를 반복적으로 생성해야할 때,
메모리의 불필요한 사용을 줄이고자 싱글톤을 사용한다.

<일상생활을 예로 이해하기 - 못 박기>

10번 못을 박기 위해,
1) 철물점에 가서 망치를 산다 -> 2) 못을 박는다.
2) 철물점에 가서 망치를 산다 -> 2) 못을 박는다.
3) 철물점에 가서....
x 10
-> 10번 못을 박기 위해,
1) 철물점에 가서 망치를 산다. -> 2) 못을 박는다.
1) 이미 사둔 망치를 또 쓰자 -> 2) 못을 박는다.
.......
x10


▼ 그림으로 표현한 싱글톤 원리


[예제_망치로 못을 박기]

package myutil;

public class MySingleTonTest {

	public static void main(String[] args) {
		int times = 10;
		for(int i = 0; i < times; i++) {
			Hammer hammer = Hammer.getInstance();
			hammer.nail();
		}
	}
	
}

class Hammer{
	public static Hammer single;
	
	protected Hammer(){}
	
	public static Hammer getInstance() {
		if(single == null) {
			single = new Hammer();
		}
		return single;
	} 
	
	public void nail() {
		System.out.println("못!");
	}
}

>> 결과

못!
못!
못!
못!
못!
못!
못!
못!
못!
못!


[ 자세한 내용 참조 링크 ]
https://velog.io/@kyle/%EC%9E%90%EB%B0%94-%EC%8B%B1%EA%B8%80%ED%86%A4-%ED%8C%A8%ED%84%B4-Singleton-Pattern

[참고]
국비과정 수업 내용참조

'Language > Java' 카테고리의 다른 글

[자바_복습] Vector클래스 : 객체 배열의 크기 관리  (0) 2022.03.17
[자바의 정석_복습] String 객체에 대한 이해  (0) 2022.03.15
[자바_복습] 이클립스에서 패키지를 .jar로 내보내기, 가져오기  (0) 2022.03.14
[자바의 정석_복습] 포함관계_Deck과 Card예시  (0) 2022.03.13
[자바의정석_복습] 객체지향 프로그래밍2 - 상속, 다형성  (0) 2022.03.12
    'Language/Java' 카테고리의 다른 글
    • [자바_복습] Vector클래스 : 객체 배열의 크기 관리
    • [자바의 정석_복습] String 객체에 대한 이해
    • [자바_복습] 이클립스에서 패키지를 .jar로 내보내기, 가져오기
    • [자바의 정석_복습] 포함관계_Deck과 Card예시
    simDev1234
    simDev1234
    TIL용 블로그. * 저작권 이슈가 있는 부분이 있다면 댓글 부탁드립니다.

    티스토리툴바