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 패턴을 활용하는 경우를 예를 들어 설명하시오. #13

Open
hyesuuou opened this issue Oct 3, 2021 · 3 comments
Labels

Comments

@hyesuuou
Copy link
Member

hyesuuou commented Oct 3, 2021

No description provided.

@hyesuuou hyesuuou added the Swift label Oct 3, 2021
@dlwns33
Copy link
Member

dlwns33 commented Oct 10, 2021

싱글톤 패턴
: 객체를 하나만 생성하여 공용으로 사용하고 싶을때 사용하는 디자인 유형

URLSession.shared
네트워크 처리를 할 때 URLSession 객체를 이용하는데,
이미 만들어져있는 shared 객체에 접근해 메서드를 수행한다.

UserDefaults.standard
UserDefaults에서 기본적으로 공유하고 있는 standard 저장소에 접근해 쓰고 읽기 위해
만들어져있는 standard 에 접근해 메서드를 수행한다.

예시 코드는 ...
class UserInfo {
static let shared = UserInfo()

var id: String?
var password: String?
var name: String?

private init() { }

}

static 으로 선언한뒤, 생성자를 private으로 지정해두어 어느곳에서나 새로 생성되는 것을 막아준다.
그리고 뷰컨마다 호출하여 쓰면 된다!

@heerucan
Copy link

싱글톤 패턴은 특정 용도로 객체를 하나만 생성하여, 공용으로 사용하고 싶을 때 사용하는 디자인 유형입니다.
static 키워드를 붙인 프로퍼티 하나 생성해 전역으로 저장하고init함수 접근제어자를 private으로 지정해 또 생성하는 것을 막아줍니다.
필요 시에는 외부에서 static으로 선언해두었던 인스턴스를 통해 접근할 수 있습니다.

@Taehyeon-Kim
Copy link
Contributor

싱글턴 패턴은 GOF 패턴의 생성 패턴 중 하나로 특정 용도로 객체를 하나만 생성한 뒤, 공용으로 사용하고 싶을 때 사용하는 디자인 패턴이다.

static키워드로 프로퍼티를 생성해서 전역으로 인스턴스를 사용하게 된다. 혹시나 init()함수를 호출해 새로운 인스턴스를 생성하는 것을 막기 위해서 private 접근 제어자를 지정한다.

싱글턴 패턴의 장점은 한 번의 인스턴스만 생성한다는 점에서 메모리 낭비를 막을 수 있고, 인스턴스를 전역으로 사용하기 때문에 자원 공유가 쉽다는 점이 있다. 반면, 단점으로는 싱글턴 인스턴스가 맡고 있는 역할이 너무 많은 경우 다른 클래스의 인스턴스와의 결합도가 높아져 '개방-폐쇄' 원칙을 위배하는 경우가 생긴다. 또한 수정 및 테스트가 어려워진다는 단점이 있다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants