class Singleton {
static var shared: Singleton? // 유일한 인스턴스를 저장할 변수
private init() { // 외부에서 인스턴스를 생성할 수 없도록 private
print("싱글톤 인스턴스 생성")
}
// 유일한 인스턴스를 반환하는 메서드
static func getInstance() -> Singleton {
if shared == nil {
shared = Singleton()
}
return shared!
}
}
class Singleton {
static let shared = Singleton() // 앱이 처음 호출될 때 인스턴스가 생성되고, 이후에는 동일한 인스턴스를 반환
private init() { // 외부에서 인스턴스를 생성할 수 없도록 private
print("싱글톤 인스턴스 생성")
}
}
이 경우 shared는 한 번만 초기화되며, 이후에 호출될 때마다 동일한 인스턴스를 반환합니다.
class NetworkManager {
static let shared = NetworkManager()
private init() {}
func fetchData(from url: URL) {
// 네트워크 요청 코드
}
}
class AppSettings {
static let shared = AppSettings()
var theme: String = "light"
var language: String = "en"
private init() {}
}
싱글톤 패턴은 특정 클래스의 인스턴스가 애플리케이션 내에서 단 하나만 존재해야 할 경우 유용합니다. 하지만 남용할 경우 의존성 관리와 테스트가 어려워질 수 있으므로, 필요할 때만 사용하는 것이 좋습니다.