青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

f(sixleaves) = sixleaves

重劍無(wú)鋒 大巧不工

  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  95 隨筆 :: 0 文章 :: 7 評(píng)論 :: 0 Trackbacks
所謂的代理設(shè)計(jì)模式,其設(shè)計(jì)目的就是為了解耦合,讓不用改變主體代碼邏輯的情況下,把代理對(duì)象所屬于的類可以替換掉為不同的類。
請(qǐng)先看如下代碼。
Person.h
 1 #import <Foundation/Foundation.h>
 2 
 3 @class Agent;
 4 
 5 @interface Person : NSObject
 6 
 7 - (void)buyTicket;
 8 
 9 @property (nonatomic, strong) Agent* delegate;
10 
11 @end
12 

Person對(duì)象,不想通過(guò)自己去買票,叫一個(gè)助手去買,這個(gè)助手就是個(gè)代理。但是如果我們直接這樣實(shí)現(xiàn),Agent就寫死了,也就是對(duì)象類型是寫死得。
下次如果代碼中更換了一個(gè)NextAgent類,則還要更改類名。或者假如Agent在項(xiàng)目中去掉了,那么Person這個(gè)類的buyTicket也就萎了。也就是說(shuō),
耦合性是強(qiáng),所以我們可以借用protocol來(lái)實(shí)現(xiàn)解耦合的代理設(shè)計(jì)模式。具體的思想就是,通過(guò)protocol定義了一組代理們必須實(shí)現(xiàn)的方法。并且將Agent *
替換成萬(wàn)能指針id。這樣的話就是id<TicketProtocol> delegate.也就說(shuō)delegate是個(gè)仁義實(shí)現(xiàn)了TicketProtocol的對(duì)象,我們可以通過(guò)這個(gè)對(duì)象來(lái)購(gòu)買票。
更重要的是統(tǒng)一了邏輯,具體的邏輯交給了要繼承這個(gè)TicketProtocol的類去實(shí)現(xiàn)。這樣我們就不用改變Person.m中的代碼。說(shuō)了這么多,先看下Person.m
中的代碼,理解下~。
Person.m
 1 #import "Person.h"
 2 #import "Agent.h"
 3 @implementation Person
 4 
 5 - (void)buyTicket
 6 {
 7     /*
 8         需求讓代理幫忙詢問(wèn)下票價(jià),剩余的張數(shù)
 9      */
10     
11     double price = [_delegate ticketPrice];
12     
13     int number = [_delegate leftTicketsNumber];
14     
15     NSLog(@"票價(jià)%lf, 剩下%d張", price, number);
16 }
17 
18 
19 - (void)dealloc
20 {
21     
22     NSLog(@"Person-dealloc");
23 
24 }
25 
26 @end
27 

Agent有兩個(gè)方法,分別為ticketPrice和leftTicketsNumber。分別返回一個(gè)價(jià)格和剩余票數(shù)。模擬實(shí)現(xiàn)很簡(jiǎn)單,所以Agent不詳細(xì)
給出。

main.m
 1 #import <Foundation/Foundation.h>
 2 #import "Person.h"
 3 #import "Agent.h"
 4 int main(int argc, const char * argv[]) {
 5     
 6     // 代理設(shè)計(jì)模式
 7     
 8     
 9     Person *p = [[Person alloc] init];
10     
11     Agent *a = [[Agent alloc] init];
12     
13     p.delegate = a;
14     
15     [p buyTicket];
16     
17     return 0;
18 }
19 

那么具體如何改變,請(qǐng)看更改后的代碼:
TicketProtocol.h
 1 #import <Foundation/Foundation.h>
 2 
 3 @protocol TicketProtocol <NSObject>
 4 
 5 - (double)ticketPrice;
 6 
 7 - (int)leftTicketsNumber;
 8 
 9 @end
10 


Person.h
 1 #import <Foundation/Foundation.h>
 2 
 3 @protocol TicketProtocol;
 4 
 5 
 6 @interface Person : NSObject
 7 
 8 - (void)buyTicket;
 9 
10 @property (nonatomic, strong) id<TicketProtocol> delegate;
11 
12 @end

======華麗的分割線===========
這樣更改之后,就算你在更換代理,也不會(huì)Person類的代碼也不需要更改。

總結(jié)

代理的概念:
當(dāng)某個(gè)類的功能交個(gè)其他類去實(shí)現(xiàn)。那個(gè)實(shí)現(xiàn)的類就是代理。

代理模式使用場(chǎng)合:
1.用來(lái)解耦合。當(dāng)一個(gè)類的功能需要其他類來(lái)實(shí)現(xiàn),又不確定是由哪個(gè)類來(lái)實(shí)現(xiàn),可以使用代理設(shè)計(jì)模式。

代理設(shè)計(jì)模式的實(shí)現(xiàn):
1.定義成員變量為萬(wàn)能指針,并且該對(duì)象必須是繼承某個(gè)協(xié)議。
posted on 2015-05-13 16:39 swp 閱讀(511) 評(píng)論(0)  編輯 收藏 引用 所屬分類: objective-c
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产亚洲欧美一区在线观看| 欧美高清在线视频| 亚洲国产成人精品久久久国产成人一区| 亚洲亚洲精品在线观看| 亚洲视频导航| 今天的高清视频免费播放成人| 亚洲一区二区在线免费观看视频| 久久综合色播五月| 欧美mv日韩mv国产网站app| 中文精品视频一区二区在线观看| 欧美电影免费观看网站| 欧美日本中文字幕| 日韩视频免费观看高清在线视频| 老司机精品久久| 欧美国产高潮xxxx1819| 香蕉成人久久| 久久午夜国产精品| 欧美一区视频在线| 欧美韩国日本综合| 久久精品在这里| 欧美日韩亚洲一区二区三区在线观看 | 99在线视频精品| 国产亚洲欧美一区在线观看| 亚洲精品国产精品久久清纯直播| 久久综合网hezyo| 亚洲欧美影音先锋| 欧美激情精品久久久| 久久久久国产成人精品亚洲午夜| 亚洲欧美日韩成人| 国产精品视频九色porn| 午夜精品99久久免费| 美女91精品| 欧美一区二区啪啪| 国产精品wwwwww| 亚洲免费在线视频| 欧美激情一区二区三级高清视频| 亚洲日本一区二区| 久久久久国产精品一区三寸| 小黄鸭精品密入口导航| 欧美一区二区私人影院日本| 一区二区三区四区国产| 亚洲影院在线| 妖精成人www高清在线观看| 亚洲香蕉成视频在线观看| 亚洲精品美女91| 久久精品五月| 久久国产福利| 国产亚洲欧美色| 羞羞色国产精品| 香蕉亚洲视频| 国产精品一区二区久久久| 在线一区亚洲| 亚洲伊人第一页| 欧美日韩一区二区免费视频| 亚洲国产mv| 亚洲精品1区2区| 久久综合色88| 免费看的黄色欧美网站| 精品福利电影| 99伊人成综合| 亚洲一区中文| 国产偷国产偷精品高清尤物| 性亚洲最疯狂xxxx高清| 久久本道综合色狠狠五月| 国产欧美日韩视频一区二区| 亚洲成人在线视频播放| 国产精品久久久久久久浪潮网站 | 亚洲高清av在线| 亚洲第一区中文99精品| 欧美va亚洲va日韩∨a综合色| 欧美日韩一区在线观看视频| 亚洲美女免费视频| 亚洲香蕉伊综合在人在线视看| 久久国产精品久久久| 久久精品官网| 欧美日韩一区二区三| 亚洲视频免费在线| 久久精品国产一区二区三区免费看| 欧美美女福利视频| 一区二区三区精品在线| 亚洲欧美一区二区三区久久| 国产喷白浆一区二区三区 | 国产精品白丝jk黑袜喷水| 一区二区三区免费网站| 日韩视频在线播放| 欧美日韩一区二区三区视频 | 小黄鸭精品aⅴ导航网站入口| 这里只有精品电影| 国产精品一区二区三区观看| 久久精品国产精品亚洲| 亚洲欧洲另类| 亚洲黄色尤物视频| 欧美日韩亚洲天堂| 久久精品综合网| 亚洲激情专区| 久久精品国产v日韩v亚洲 | 午夜精品久久久久久久白皮肤 | 久久琪琪电影院| 亚洲精品视频一区二区三区| 国产精品v欧美精品v日韩 | 国产精一区二区三区| 久久久青草青青国产亚洲免观| 久久精品成人| 日韩一区二区精品在线观看| 久久综合五月天婷婷伊人| 99在线精品视频| 欧美aa在线视频| 亚洲综合视频网| 亚洲黄网站黄| 国产亚洲欧美在线| 欧美日韩欧美一区二区| 久久久久综合| 亚洲欧美日韩综合一区| 亚洲精品国产精品久久清纯直播| 亚洲国产日韩美| 国产情人节一区| 欧美日韩精品在线播放| 亚洲精品护士| 久久综合99re88久久爱| 亚洲欧美日韩国产综合在线| 亚洲日产国产精品| 海角社区69精品视频| 国产精品亚洲精品| 欧美日韩国产一级| 免费日本视频一区| 久久久另类综合| 欧美国产视频一区二区| 欧美综合国产| 亚洲在线一区二区| 一区二区三区高清| 99国产精品久久久久久久成人热| 欧美激情亚洲视频| 久久精品视频在线免费观看| 亚洲自拍啪啪| 中国女人久久久| 久久久99国产精品免费| 亚洲国产毛片完整版| 国内精品久久久久久久97牛牛| 另类亚洲自拍| 久久狠狠亚洲综合| 亚洲欧美在线一区二区| 亚洲视频一二三| 9色精品在线| 开心色5月久久精品| 日韩一级精品视频在线观看| 欧美午夜一区| 欧美日韩一二区| 欧美日韩国产小视频| 欧美日韩国产精品一区二区亚洲| 欧美一区在线视频| 午夜久久美女| 午夜国产精品视频| 亚洲在线观看视频网站| 亚洲一区中文| 久久激情视频久久| 男人的天堂成人在线| 欧美成人免费一级人片100| 美女主播精品视频一二三四| 美女精品在线观看| 欧美精品二区三区四区免费看视频| 亚洲免费视频中文字幕| 亚洲欧美综合一区| 久久九九热re6这里有精品| 久久精品一区二区国产| 99这里有精品| 亚洲欧美日韩综合| 快射av在线播放一区| 能在线观看的日韩av| 欧美精品在线播放| 国产精品爽黄69| 韩国久久久久| 亚洲日本成人| 亚洲电影av| 日韩视频在线你懂得| 欧美呦呦网站| 免费观看一区| 一区二区三区精品久久久| 亚洲人成绝费网站色www| 欧美精品电影| 欧美日韩一区二区三区四区五区| 欧美在线观看www| 久久丁香综合五月国产三级网站| 亚洲深夜av| 午夜在线精品偷拍| 欧美福利专区| 国产欧美日韩精品专区| 亚洲大胆视频| 亚洲一区免费视频| 久久综合给合| 一本色道久久88综合日韩精品| 亚洲精品影视| 最新国产精品拍自在线播放| 亚洲一级黄色av| 毛片av中文字幕一区二区| 国产精品久久一卡二卡| 日韩一区二区电影网| 美女黄网久久| 亚洲男人的天堂在线| 久久久999精品免费| 欧美亚洲成人网|