AppDelegate를 백만 가지 방법과 속성을 포함하는 "큰 진흙 투성이"로 바꾸는 것은 좋은 전략이 아닙니다 (유혹을 불러 일으킬 수도 있음).
잘 디자인 된 객체로 기능 비트를 분류하는 더 나은 객체 지향 접근 방식 - 예를 들어 모든 데이터베이스 상호 작용을 처리하는 DatabaseManager 클래스가있을 수 있습니다. 그런 다음 DatabaseManager가 응용 프로그램 대리인 인스턴스에 DatabaseManager에 대한 참조를 요청해야하는 응용 프로그램이있을 수 있습니다.
또는 DatabaseManager에 대한 참조를 필요로하는 앱 부분으로 전달할 수 있습니다. 그러나이 마지막 접근 방식은 더 많은 '인터페이스 오염'을 야기합니다. 여기서는 DatabaseManager를 전달하기 위해 많은 장소에서 인터페이스를 수정해야합니다.
또 다른 대안은 효과적으로 DatabaseManager 자체를 '싱글 톤'으로 만드는 것입니다. 즉, 클래스의 인스턴스 메소드가 클래스의 클래스 메소드를 통해 액세스됩니다. 이런 방식으로 작동하는 싱글 톤은 대개 싫은 소리를 내며 대개 좋은 이유가 있습니다 (테스트를 더 어렵게 만듭니다.). 개체에 '싱글 톤 (singleton)'속성이있는 것을 피하는 경향이 있습니다. 원하는 종류의 액세스가 필요할 경우 '선호하는 지점'(원하는 경우 '일종의'종류)을 사용하는 것이 더 좋습니다. 공유 인스턴스를 얻을 수 있습니다.
그리고 다른 사람들은 나중에 같은 코드에서 작업하는 경우 자신의 솔루션을 좋아해야합니다. – occulus