Забігаючи на перед, ось стаття на основі якої я хочу написати цей пост.
MVC - (Model - View- Controller) -
Модель - містить в собі набір даних, які на даний момент показуються або задіяні на View
View - відповідає за візуальний показ даних, які беруться з моделі, а також за можливість маніпулювання юзером з цими даними.
Контроллер - координує зв'язок між моделлю та view, маніпулює з моделями обробляючи сигнали, які приходять з view.
Singleton - (Одинак)
В назві своїй, несе основну відповідь, в самому додатку буде створена лише одна копія цього класу. Яскравими прикладами є
- (instancetype) sharedInstance {
static MyClass * _sharedInstance = nil;
static dispatch_once_t onceDispatchCall;
dispatch_once(& onceDispatchCall, ^{
_sharedInstance = [[MyClass alloc]init];
});
return _sharedInstance;
}
Проблемними місцями є тестування таких класів, в плані підстановки Моків замість реальних об'єктів, а також те що напряму не видно, що при додаванні його в хедери, якщо не знаєш, що це сінглетон, то важко побачити пряму залежність від нього.
Фасад
Патерн який служить для того, щоб заховати від користувача більшість методів і залишити лише ті, які дійсно йому треба, при цьому при зміні внутрішньої архітектури і логіки при необхідності, користувач не помітить різниці і йому не треба буде переписувати свою логіку і оновлювати свої методи.
Декоратор - альтернатива наслідуванню, коли вам треба розширити клас до якого застосовується декоратор
MVC - (Model - View- Controller) -
Модель - містить в собі набір даних, які на даний момент показуються або задіяні на View
View - відповідає за візуальний показ даних, які беруться з моделі, а також за можливість маніпулювання юзером з цими даними.
Контроллер - координує зв'язок між моделлю та view, маніпулює з моделями обробляючи сигнали, які приходять з view.
Singleton - (Одинак)
В назві своїй, несе основну відповідь, в самому додатку буде створена лише одна копія цього класу. Яскравими прикладами є
Приклад[NSUserDefaults standardUserDefaults]
,[UIApplication sharedApplication]
,[UIScreen mainScreen]
,[NSFileManager defaultManager]
- (instancetype) sharedInstance {
static MyClass * _sharedInstance = nil;
static dispatch_once_t onceDispatchCall;
dispatch_once(& onceDispatchCall, ^{
_sharedInstance = [[MyClass alloc]init];
});
return _sharedInstance;
}
Проблемними місцями є тестування таких класів, в плані підстановки Моків замість реальних об'єктів, а також те що напряму не видно, що при додаванні його в хедери, якщо не знаєш, що це сінглетон, то важко побачити пряму залежність від нього.
Фасад
Патерн який служить для того, щоб заховати від користувача більшість методів і залишити лише ті, які дійсно йому треба, при цьому при зміні внутрішньої архітектури і логіки при необхідності, користувач не помітить різниці і йому не треба буде переписувати свою логіку і оновлювати свої методи.
Декоратор - альтернатива наслідуванню, коли вам треба розширити клас до якого застосовується декоратор
- Категорії
- Делегати
Немає коментарів:
Дописати коментар