iOS常用設計模式:MVC、單例、代理、觀察者。

來源:互聯網
上載者:User

標籤:

MVC

模型-視圖-控制器(MVC)設計模式

MVC根據角色劃分類,涉及到三個角色:

Model:模型儲存應用程式的資料。

View:視圖是模型的可視化表示以及使用者互動的控制項。

Controller:控制器是一個協調所有工作的中介者。它訪問模型中的資料並在視圖中展示它們,同時它們還監聽事件和操作資料。

 

單例設計模式

單例設計模式可以確保對於一個類只有一個執行個體(對象)存在,這個對象有一個全域的訪問點。通常採用懶載入的方式在第一次用到對象的時候才去建立它。

如何建立一個單例:

如:在SortDetailsModelDown.h中聲明類方法+(SortDetailsModelDown *)shareSortDetailsModelDown;

在SortDetailsModelDown.m中實現該方法

static SortDetailsModelDown * single = nil;

+(SortDetailsModelDown *)shareSortDetailsModelDown{

    @synchronized(self){

        if (!single) {

            single = [[SortDetailsModelDown alloc]init];

        }

    }

    return single;

}

代理

自訂協議:

代理:遵循協議的對象

第一步:制定協議:(協議名:類名+Delegate)

@class MyView;@protocol MyViewDelegate <NSObject>@required //必須實現的方法-(void)changeViewBackgroudColor:(MyView *)view;@optional//可選方法-(void)test;@end

第二步:制定代理

@interface MyView : UIView第二步:指定代理@property (nonatomic,assign)id<MyView> delegate;@end

第三步:代理遵循協議.

第四步:代理實現協議裡面的必須實現的方法和其他可選方法.

第五步:委託方通知代理開始執行方法.

 

觀察者

KVO  Key-Value Observing.它是一種機制,當指定的對象的屬性被修改後,KVO自動通知相應的觀察者。

  1. 註冊觀察者[message addObserver:self forKeyPath:kKVOPathKey options:NSKeyValueObservingOptionNew context:Nil];
  2. 更改主題對象屬性的值,即觸發發送更改的通知 _message.key = @"asdfasd";
  3. 在制定的回呼函數中,處理收到的更改通知
    123456 - (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ if ([keyPath isEqual:kKVOPathKey] &amp;&amp; object == _message) {     NSLog(@"get %@",change); }}
  4. 登出觀察者 [_message removeObserver:self forKeyPath:kKVOPathKey];

 

 

 

iOS常用設計模式:MVC、單例、代理、觀察者。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.