싱글톤 패턴
- 객체 하나로 특정용도에 한해서 공용으로 쓰는 디자인 유형
static
프로퍼티로 instance 생성
class UserInfo{
static let shared = UserInfo()
var id : String?
var password : String?
var name : String?
}
init
함수 접근제어자를 private
로 지정
init
함수를 호출하여 Instance
를 또 생성하는 것을 막기 위해서
class UserInfo{
static let shared = UserInfo()
var id : String?
var password : String?
var name : String?
private init(){ }
}
- 싱글톤 클래스 접근
- 아까 생성해두었던
static
프로퍼티를 사용
let UserInfo = UserInfo.shared
userInfo.id = "Johnson"
let userInfo = UserInfo.shared
userInfo.password = "123"
let userInfo = UserInfo.shared
userInfo.name = "Johnson"
장단점
메모리 낭비
를 방지할 수 있다.
Singleton Instance
는 전역 Instance
로 다른 클래스들과 자원공유가 쉽다.
DBCP database connection pool
처럼 공통된 객체를 여러개 생성해서 사용해야하는 상황에서 많이 사용한다.
ㄴ 쓰레드풀
ㄴ 캐시
ㄴ 대화상자
등등
Thread-safe
하다.
멀티스레딩
환경에서 싱글톤 생성은 안전하지 않다. 여러 스레드가 동시에 싱글톤을 생성하면 경우에 따라서 Instance
가 2개, 3개 생성될 수 있다.
- 단점
다른 클래스 간의 Instance
들 간 결합도가 높아져개방=폐쇄
원칙을 위배할 수 있다. 그래서 객체 지향 설계 원칙을 어길 수 있다.
ㄴ Singleton Instance
가 너무 많은 일을 하게 될 때
ㄴ 많은 데이터를 공유시킬 때
ios에서의 싱글톤
let screen = UIScreen.main
let userDefault = UserDefaults.standard
let application = UIApplication.shared
let fileManager = Filemanager.default
출처 https://babbab2.tistory.com/66