Альтернатива Singleton в Objective-C для лучшего проектирования приложений

Похоже, что много кода Objective-C в настоящее время использует синглтоны. многие люди жалуются на Синглтон, например Google ( Куда делись все синглтоны? ), их коллеги-инженеры все равно используют его: http://code.google.com/mobile/analytics/docs/iphone/

I знаю, что у нас уже есть некоторые ответы в Stack Overflow, но они не полностью специфичны для Objective-C как динамического языка: в Objective C есть категории, а во многих других языках их нет.

Так каково ваше мнение? Вы все еще пользуетесь синглтоном? Если да, то как сделать приложение более тестируемым?

Обновлено : я думаю, нам нужно использовать коды в качестве примера для более конкретного обсуждения, поэтому многие обсуждения SO основаны на теории без единой строчки кода.

Давайте использовать SDK Google Analytics для iOS в качестве примера:

// Initialization
[[GANTracker sharedTracker] startTrackerWithAccountID:@"UA-0000000-1"
                                        dispatchPeriod:kGANDispatchPeriodSec
                                              delegate:nil];
// Track page view
[[GANTracker sharedTracker] trackPageview:@"/app_entry_point"
                                   withError:&error];

Красота приведенного выше кода заключается в том, что вы инициализировали его с помощью метода « startTrackerWithAccountID », вы можете запускать метод " trackPageview " во всех ваших приложениях без прохождения конфигураций.

Если вы считаете, что Singleton плохой, можете ли вы улучшить приведенный выше код?

Большое спасибо за ваш вклад, счастливой пятницы.

17
задан Howard 6 May 2011 в 15:32
поделиться