우아한 프로그래밍
article thumbnail

 안녕하세요.

오늘부터 자바 디자인패턴에 관해서 글을 쓰려고 합니다.

 

옛날 부터 관심있는 부분이었는데 제대로된 공부는 하지 못했네요.

현직개발 4년차가 되었는데도 자주 쓰는 패턴만 알고

나머지는 모르겠네요.

 

그래서 공부를 하는 김에 블로그에 글을 써서 공유하려고 합니다.

모두 디자인 패턴을 배워봅시다.

 

오늘은 디자인패턴의 시작인 싱글톤 패턴에 대해서 알아

보도록 하겠습니다.

 

 

싱글톤 패턴을 한마디로 요약하면 아래와 같습니다.

 

"해당 클래스의 인스턴스가 하나만 만들어지고,

어디서든지 그 인스턴스에 접근할  수 있도록 하기 위한 패턴"

 

그럼 예제를 통해서 싱글톤 패턴을 이해해 보도록 합시다.

 

 

 

먼저 아래와 같은 클래스를 작성합시다.

 

 

 

Main.java 부분에 아래와 같이 코딩을 합니다.

 

 

 

그리고 F11을 눌러서 실행을 시켜봅시다.

객체의 아이디를 비교했더니 다른 것을 확인 할 수 있습니다.

객체가 아이디가 다르다는 것은 객체를 생성 할 때 새로운 객체가 생성되었다는 것을 의미하며

즉 singleton1과 singleton2 객체가 서로 다르다는 것을 의미합니다.

 

 

 

 

그렇다면 과연 어떻게 소스를 작성하여야 싱글톤 패턴을 적용 할 수 있는 것일까요?

바로 아래 소스처럼 작성을 하시면 됩니다.

Singeton객체에 getInstance() 메소드를 static으로 만듭니다.

 

소스는 아래와 같습니다.

분석을 해보면 멤버변수 singleton을 선언을 하고

getInstance는 객체를 멤버변수 singleton을 반환하는 함수입니다.

단순히 반환하는 것이 아닌 객체가 비어있다면 최초로 객체를 생성하여 반환을 하고

객체가 비어있지 않다면 그대로 객체를 반환합니다.

 

이러한 구조로 인해 싱글톤 패턴이 적용되는 것입니다.

 

 

 

실행을 해보면 객체가아이디가 똑같은 것을 확인 할 수 있습니다.

싱글톤객체임이 확인이 된 것입니다.

 

 

요즘 이러한 싱글톤 패턴을 스스로 만들어 적용할 일은 많지 않습니다.

왜냐면 이글을 보고 게시는 분들은 현직 개발자 이시거나

개발자를 꿈꾸시는 분들이겟지요?

 

실무에서는 스프링프레임워크를 빼고 개발을 논할 수가 없습니다.

스프링프레임워크는 객체의 라이프사이클을 관리합니다.

라이프사이클을 관리하면서 객체를 디폴트로 싱글톤으로 유지시켜줍니다.

 

스프링 프레임워크가 알아서 해준다고해서 개념을 모르면 안되겠지요?

개념을 배웠다는 뿌듯한 마음을 가지고

이글을 읽어 주셨길 바랍니다^^

 

 

 

 

 

 

profile

우아한 프로그래밍

@자바조아!

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!