代理設(shè)計(jì)模式

這幾天都在用代碼的形式在完成滑動解鎖的功能,今天講到了代理設(shè)計(jì)模式。而完成一個(gè)代理只需要遵循下面的六個(gè)步驟。
?代理設(shè)計(jì)模式
  首先,設(shè)計(jì)模式是什么:一種完成特定功能的方式。

類別Category:給已有的類添加方法。
代理Delegate:1.配置
        2.兩個(gè)對象之間傳遞數(shù)據(jù)A(B) B-->A(A完成B的方法,但是B要將結(jié)果回調(diào)給A)
所有的設(shè)計(jì)模式都有一個(gè)固定的規(guī)范,所以代理設(shè)計(jì)模式也不例外:

UnlockModel(功能類):
    1.寫一套代理(協(xié)議)
      代理的方法就是回調(diào)的方式
      @property TextSettingDelegate<NSObject>
      //使用這個(gè)類對文本進(jìn)行配置,用戶配置完畢,通過這個(gè)方法將用戶配置的數(shù)據(jù)回調(diào)給調(diào)用者。
      - (void)textWithSize:(CGFloat)size color:(UIColor *)color;
      @end
    2.聲明一個(gè)變量記錄調(diào)用者
      @property (assign, nonatomic) id<TextSettingDelegate> delegate;
        這里的id類型是為了適應(yīng)使用這個(gè)代理的各種數(shù)據(jù)類型,而這里的assign是因?yàn)榉乐瓜嗷ヂ暶魉袡?quán)而產(chǎn)生死鎖。
    3.判斷調(diào)用者是否實(shí)現(xiàn)了相應(yīng)地回調(diào)方法(就是代理方法)
      if([self.delegate respondsToSelector:@selector(textWithSize:color:)]){
        [self.delegate textWithSize:30 color:[UIColor blueColor]];
      }
  使用者:
    1.服從代理
      @interface ViewController:
      UIViewController<TextSettingDelegate>
    2.設(shè)置功能類里面的delegate變量
      //配置調(diào)用者為當(dāng)前的這個(gè)對象
      svc.delegate = self;
        (告訴功能類,功能類的毀掉方法在哪里實(shí)現(xiàn),換句話說就是誰來接收回調(diào)數(shù)據(jù))
    3.實(shí)現(xiàn)相應(yīng)的代理方法(誰接收,誰就實(shí)現(xiàn))
      - (void)textWithSize:(CGFloat)size color:(UIColor *)color{
        self.sambolLabel.textColor = color;
        self.sambolLabel.font = [UIFont systemFontOfSize:size];
      }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容