TIL(Today I Learned)

11월 26일(목)

학습내용

  • Singleton 패턴에 대해서 학습하였다.
    • Singleton 패턴은 클래스 프로퍼티로 객체를 생성하고, 이외의 객체 생성을 불가능하게 하여 한개의 객체만 유지하는 것이다.
    • 보통 shared, default, common 으로 이름을 짓는다.
    • NotificationCenter.default, UIApplication.shared 등..
  • 프로토콜에 대해서 학습하였다.
    • 프로토콜은 타입의 청사진, 기능 명세서, 기능 요구사항이다.
    • 프로토콜은 클래스 상속과 다르게 복수로 채택할 수 있다.
  • Delegation 패턴에 대해서 학습하였다.
    • Protocol을 응용한 패턴이다.
    • 객체가 delegate protocol을 채택한 다른 위임의 대상에게 protocol에 명세되어 있는 기능들을 위임하는 것이다.

문제점/고민한점

  • Singleton 접근 범위가 꼭 전역이어야 하는가?
  • Singleton에서 Singleton 객체의 이름을 shared로할지 default로 할지 기준은 무엇일까?
  • Delegation 패턴과 의존성 주입의 차이는? 의존성 주입은 클래스 내에서 필요한 서비스를 다른 객체로부터 제공받는 것이고, Delegation 패턴도 마찬가지로 필요한 기능을 다른 객체에게 위임하는 것이니깐 비슷한거 같은데..

해결방법

  • Singleton 접근 범위가 꼭 전역이어야 하는가?
    • 반드시 전역이여야 하는건 아니다.
  • Singleton에서 Singleton 객체의 이름을 shared로할지 default로 할지 기준은 무엇일까?
    • Singleton 한 개뿐만 아니라 객체를 생성할 수 있으면 default 이고, 오직 한개만 존재할 수 있으면 shared라고 이름 짓는것 같다고 추측하였다.
  • Delegation 패턴과 의존성 주입의 차이는? 의존성 주입은 클래스 내에서 필요한 서비스를 다른 객체로부터 제공받는 것이고, Delegation 패턴도 마찬가지로 필요한 기능을 다른 객체에게 위임하는 것이니깐 비슷한거 같은데..
    • 일단, Delegation Pattern은 Structural Pattern 이고 의존성 주입은 Creational Pattern 이다.
    • 그리고 의존성 주입과 달리, Delegation Pattern은 위임 받는 대상이 delegate protocol을 채택해야한다.