1

여기에 나와있는 세 가지 요구 사항을 만족하는 것으로 보입니다. On Design Patterns: When to use the Singleton?데이터 접근 자 객체 singleton 또는 다른 패턴? (목표 C)

한 번만 존재해야합니다. 소스베이스 전체에서 액세스해야합니다. 동시 액세스, 즉 쓰기에 대한 잠금을 처리하지만 동시 읽기는 처리 할 수 ​​있습니다.

안녕 모두,

내가 의심의 여지 지능 교육과 현명한 싱글 톤은 '악'것을 조언 보석과 싱글을 많이 읽어 봤는데 안티 패턴이나 그냥 일반 나쁜 소식이다.

로깅이 의미가 있지만 다른 것은별로 중요하지 않다는 주장을합니다.

본질적으로 영구 데이터 저장소 컨텍스트의 경우가 싱글 톤 즉, 디스크에서 메모리로 읽기/쓰기 및 개체 그래프를 참조하는 경우에 적합한 지 여부 만 알면됩니다.

그렇지 않은 경우 사람들이 일반적으로이 문제에 어떻게 대처할 수 있습니까? 현재 문제는 없습니다. 단 한 번만 생성되었으므로 빠르며 접근 논리가 한 곳에 있습니다. 의미있는 것은 데이터 모델과 관련된 모든 것을 수행하는 코드 한 줄을 필요로한다는 것을 의미합니다.

이것은 테스트에 좋지 않다는 유일한 논점을 남겨 둡니다. 이는 데이터에 대한 하드 코딩 된 생산 구현이지만, 카테고리 또는 테스트 코드를 통해 메소드를 작성하여 테스트 버전을 만들 수는 없습니다. 싱글 톤?

그리고 DI 테스터의 마지막 논쟁은 단순히 인터페이스가 아닌 무언가에 대한 인터페이스가 아니라 하드 코딩 된 구현이라는 것입니다. 그렇지만 DI 프레임 워크를 사용하는 주요한 드라이브가 실제로 없습니다. 구현을 위해 프로토콜을 사용할 수 있으며 테스트에서 객체 상태를 설정하기 위해 별도의 init 메소드를 사용할 수 있습니다. 싱글 톤, 또는 현실적으로 한 종류의 ... 생산을위한 두 종류의 상태가 될 것입니다.

내 의견으로는 훨씬 읽기 쉽고 빠르게 개발할 수 있습니다.

내 의견 변경

답변

0

그래, 일부 싱글 톤은 악입니다. MRC 지식이 거의없고 ARC가 더 많은 새로운 개발자의 경우 메모리를 낭비하고 휘발성을 동반해야하므로 무서운 것처럼 보입니다.

그러나 사용하는 데 반대하지는 않으며 실제로 사용 목적이 있습니다. 일부는 아래에 있습니다.

  • 은 (userdefaults 영구 저장 장치 및 응용 프로그램 느리게 시작되는 해당 많은 항목을 저장하기 때문에) 우리가 UserDefaults에 저장하는 것을 선호 할 수없는 여러 화면 사이 등 배열 및 사전 (VC의) 같은 대신 싱글을 대용량 데이터 모델을 공유 할 때 현재 앱 컨텍스트에만 머물러있어 앱 재시작 앱이 새로운 앱 컨텍스트를 생성하기 때문에 가장 좋습니다.

  • 안정적인 데이터베이스 연결이 필요할 때 우리는 모든 비즈니스 클래스에서 연결하고 닫을 필요없이 앱에 액세스 할 수 있어야합니다.

  • 동적으로 주제를 다룰 수있는 응용 프로그램을 원했을 때 우리는 모든 색상, 이미지 인스턴스 등을 보유하는 싱글 톤 클래스를 만들어야하고 응용 프로그램 VC/Views 등에서 해당 인스턴스를 사용할 필요가 있습니다. 따라서 코드 중복 및 재사용 없음 - 처리 테마는 모든 장소에서 발생합니다.

당신의보기를 바꾸지 않아도되지만 싱글 톤에 대한 긍정적 인 의도를 얻기 위해 약간 조정 해줘야합니다.

이 기능을 사용하면 감사합니다.