Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Singleton Pattern #2

Closed
heydoy opened this issue Dec 19, 2022 · 2 comments
Closed

Singleton Pattern #2

heydoy opened this issue Dec 19, 2022 · 2 comments
Labels
Architecture 디자인패턴, 아키텍처

Comments

@heydoy
Copy link
Member

heydoy commented Dec 19, 2022

  1. 단 하나의 클래스에 단 하나의 인스턴스만 접근할 수 있게 해주는 것, 생성자를 private init()을 생성해야 하는 것
  2. 하나의 인스턴스를 사용하기 때문에, 메모리 낭비를 방지할 수 있다.
  3. 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우 다른 클래스의 인스턴스들 간에 결합도가 높아져서 “개방-폐쇄 원칙”을 위배하게 된다. (멀티 쓰레드 환경에서 동기화처리를 안하면 인스턴스가 두 개가 생성된다는지 하는 경우가 발생할 수 있다.)
@heydoy heydoy added the Architecture 디자인패턴, 아키텍처 label Dec 19, 2022
@LeeJoobang
Copy link

  1. 특정 용도로 객체를 하나만 생성해 공용으로 사용하고 싶을 때 사용하는 디자인 패턴이다.
  2. 클래스에 대한 인스턴스는 최초 생성될 때 딱 한번 생성해 전역에 두고, 그 이후 인스턴스만 접근할 수 있도록 한다.
  3. 장점: 인스턴스를 한번만 생성하므로, 메모리 낭비를 방지할 수 있으며, 전역인스턴스로 다른 클래스와 공유하기 쉽다.
  4. 단점: 싱글톤 인스턴스가 너무 많은 일을 하거나, 데이터를 공유하므로 다른 클래스의 인스턴스간의 결합도가 높아져서 개방, 폐쇄 원칙을 위배한다. 이로 인해 다른 클래스와의 간섭이 높아져 수정과 테스트가 어려워진다.

@Glsme
Copy link
Contributor

Glsme commented Dec 20, 2022

메모리상에 유일하게 1개만 존재하는 객체 설계이다.

  • 장점: 인스턴스를 한개만 생성하여 메모리 측면에서 낭비를 방지할 수 있다.
  • 단점: 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우 다른 클래스간의 결합도가 높아져 SOLID 원칙 중 개방-폐쇄 원칙을 위배하게 된다.

@Glsme Glsme closed this as completed Dec 21, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Architecture 디자인패턴, 아키텍처
Projects
None yet
Development

No branches or pull requests

3 participants