싱글톤 패턴

냐옹·2024년 7월 15일
0

IOS

목록 보기
24/32

싱글톤 패턴

  • 객체 하나로 특정용도에 한해서 공용으로 쓰는 디자인 유형
  1. static프로퍼티로 instance 생성
class UserInfo{
	static let shared = UserInfo()

	var id : String?
    var password : String?
    var name : String?
}
  1. init함수 접근제어자를 private로 지정
  • init 함수를 호출하여 Instance를 또 생성하는 것을 막기 위해서
class UserInfo{
	static let shared = UserInfo()

	var id : String?
    var password : String?
    var name : String?
      
    private init(){ }
}
  1. 싱글톤 클래스 접근
  • 아까 생성해두었던 static 프로퍼티를 사용
// A View
let UserInfo = UserInfo.shared
userInfo.id = "Johnson"

// B View
let userInfo = UserInfo.shared
userInfo.password = "123"

// C View
let userInfo = UserInfo.shared
userInfo.name = "Johnson"

장단점

  • 장점
  1. 메모리 낭비를 방지할 수 있다.
  2. Singleton Instance는 전역 Instance로 다른 클래스들과 자원공유가 쉽다.
  3. DBCP database connection pool처럼 공통된 객체를 여러개 생성해서 사용해야하는 상황에서 많이 사용한다.
    쓰레드풀
    캐시
    대화상자 등등
  4. 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

0개의 댓글