본문 바로가기
인강/GoF의 디자인패턴

싱글톤 패턴 수업 듣는 중에 궁금한게 생겼다.

by 맙소사 2022. 2. 3.

싱글톤 패턴은 스턴스를 오직 하나만 ! ! ! ! 만들어 제공하는 클래스와 그 인스턴스에 global하게 접근할 수 있는 방법이 필요한 친구.

 

싱글톤 패턴을 간단하게 구현하기 위해서는 

1) 생성자를 private로 만든다

2) 인스턴스를 private static으로 만든다

3) 그리고 public static 메서드에서 클래스 내의 인스턴스를 리턴해줌

 

위와 같은 세 가지의 방법을 거치는데(그러나 위와 같은 방법은 멀티쓰레드를 사용할 때 문제가 될 수 있기 때문에 다른 싱글톤 방식을 사용한다고 한다), 예전에 프로젝트 하거나 수업 들을 때는 그냥 무지성으로 응 하나만 쓰래 이렇게 써야지 하고 작성했던 터라 이유를 잘 몰랐다. 이제는 사용하는 이유는 알았는데 접근제어자를 어째서 저런식으로? 쓰는지? 궁금해서 강의도 찾아보고 구글링도 했는데 안나와서... 오픈카톡방에 여쭤봤더니 착한 분들이 지식을 나눔해주셨다 ㅠ_ㅠ 생성자를 private로 만드는 이유는 모든 디자인패턴 강의와... 블로그와... 책에서 다 설명해준다. 다른 클래스에서 new를 사용해서 새로운 인스턴스 생성을 할 수 없게 막기 위해서임. 그런데 인스턴스를 private로 만드는 이유는 나와있지가 않은거임. 내가 못 찾은 것일수도 있음. 그래서 물어봤는데

은닉화!!!!!!!!!!

 

내가 접근제어자를 사용하는 이유랑 OOP에 대한 지식이 부족했던거임... 은닉화라는 단어 진짜 오랜만에 봤다. 어떤 분께서는 자바의 정석을 사진으로 찍어서 공유해주셨는데 해당 서적도 마찬가지로 생성자 접근제어자에 관한 내용만 작성되어있었기에 패스함.

 

인스턴스를 private로 선언하는 이유는 인스턴스의 수정을 막기 위해서! null로 초기화 될 수 있기 때문에 주의가 필요함.

내일은 oop 다시 봐야겠다.

 

'인강 > GoF의 디자인패턴' 카테고리의 다른 글

추상 팩토리 (Abstract factory) 패턴  (0) 2022.02.07
팩토리 메서드(Factory method) 패턴  (0) 2022.02.05
싱글톤(Singleton)패턴 복습  (0) 2022.02.04
디자인패턴  (0) 2021.11.03

댓글