우선, Objective-C를 사용하고 있지만, 이것은 전혀 중요하지 않습니다.이 상황을 해결하기 위해 어떤 디자인 패턴을 사용할 수 있습니까?
내 상황은 다음과 같습니다.
두 가지 시나리오가 있습니다. 내가 좋아하는 전 처리기 매크로에 의해 구별 :
#ifdef USER
do some stuff for scenario 1
#else
do some stuff for scenario 2
두 시나리오 모두 모든 응용 프로그램에서 항목의 목록과 함께 작동하지만 차이는 해당 항목을 얻을 수있는 방법입니다.
처음에는 서버에 요청을 보내 항목을 가져옵니다.
두 번째로는 로컬 장치 저장소에서 가져옵니다.
지금 내가 수행 한 두 번째 시나리오가 구현되었습니다. 나는 로컬 스토리지에서 항목을 가져 와서 항목 목록을 반환하는 싱글 톤 클래스를가집니다. (전통적인 데이터베이스 싱글 톤처럼)
다른 시나리오를 추가하고 싶습니다. 항목은 앱의 어느 지점에서나 얻을 수 있기 때문에 나는 이것을 싱글 톤이되기를 바랍니다.
싱글 톤 수퍼 클래스를 갖고 항목을 가져 오는 여러 가지 방법을 구현하는 두 개의 하위 클래스를 갖는 것이 합리적입니까? 싱글 톤 계층 구조는 나에게 이상하게 들린다.
런타임 때까지 어떤 클래스를 인스턴스화해야하는지 알 수 없으므로 팩토리 메서드와 같은 사운드가 이상적입니다. – DavidB
컴파일 시간 (실제로는 전처리 시간)에 알 수 있습니다. – pdrcabrod