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

f(sixleaves) = sixleaves

重劍無鋒 大巧不工

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  95 隨筆 :: 0 文章 :: 7 評論 :: 0 Trackbacks
所謂的代理設計模式,其設計目的就是為了解耦合,讓不用改變主體代碼邏輯的情況下,把代理對象所屬于的類可以替換掉為不同的類。
請先看如下代碼。
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對象,不想通過自己去買票,叫一個助手去買,這個助手就是個代理。但是如果我們直接這樣實現,Agent就寫死了,也就是對象類型是寫死得。
下次如果代碼中更換了一個NextAgent類,則還要更改類名。或者假如Agent在項目中去掉了,那么Person這個類的buyTicket也就萎了。也就是說,
耦合性是強,所以我們可以借用protocol來實現解耦合的代理設計模式。具體的思想就是,通過protocol定義了一組代理們必須實現的方法。并且將Agent *
替換成萬能指針id。這樣的話就是id<TicketProtocol> delegate.也就說delegate是個仁義實現了TicketProtocol的對象,我們可以通過這個對象來購買票。
更重要的是統一了邏輯,具體的邏輯交給了要繼承這個TicketProtocol的類去實現。這樣我們就不用改變Person.m中的代碼。說了這么多,先看下Person.m
中的代碼,理解下~。
Person.m
 1 #import "Person.h"
 2 #import "Agent.h"
 3 @implementation Person
 4 
 5 - (void)buyTicket
 6 {
 7     /*
 8         需求讓代理幫忙詢問下票價,剩余的張數
 9      */
10     
11     double price = [_delegate ticketPrice];
12     
13     int number = [_delegate leftTicketsNumber];
14     
15     NSLog(@"票價%lf, 剩下%d張", price, number);
16 }
17 
18 
19 - (void)dealloc
20 {
21     
22     NSLog(@"Person-dealloc");
23 
24 }
25 
26 @end
27 

Agent有兩個方法,分別為ticketPrice和leftTicketsNumber。分別返回一個價格和剩余票數。模擬實現很簡單,所以Agent不詳細
給出。

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     // 代理設計模式
 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 

那么具體如何改變,請看更改后的代碼:
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

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

總結

代理的概念:
當某個類的功能交個其他類去實現。那個實現的類就是代理。

代理模式使用場合:
1.用來解耦合。當一個類的功能需要其他類來實現,又不確定是由哪個類來實現,可以使用代理設計模式。

代理設計模式的實現:
1.定義成員變量為萬能指針,并且該對象必須是繼承某個協議。
posted on 2015-05-13 16:39 swp 閱讀(506) 評論(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>
            欧美激情视频网站| 国产区在线观看成人精品| 欧美粗暴jizz性欧美20| 在线播放日韩专区| 亚洲精品国产欧美| 国产九九精品视频| 欧美在线高清视频| 亚洲激情视频网| 久久精品欧美日韩| 亚洲理论在线| 国产一区二区精品丝袜| 亚洲欧洲在线观看| 欧美激情亚洲一区| 亚洲精品一区在线| 一本色道88久久加勒比精品| 亚洲欧洲一区二区天堂久久| 亚洲福利视频网| 99国产精品久久久久久久久久| 99国产精品| 亚洲欧美日韩在线综合| 久久综合999| 欧美视频免费在线| 国产综合一区二区| 一区二区黄色| 久久综合激情| 99精品视频一区二区三区| 午夜精品久久久99热福利| 鲁大师影院一区二区三区| 国产精品qvod| 亚洲精品精选| 久久国产欧美| 999亚洲国产精| 久久久久99| 国产精品区一区二区三区| 亚洲国产精品久久久久婷婷884| 中文在线资源观看网站视频免费不卡 | 免费国产一区二区| 国产精品你懂的在线| 亚洲第一狼人社区| 久久aⅴ乱码一区二区三区| 亚洲欧洲一区二区三区在线观看| 香港成人在线视频| 欧美日韩三级视频| 亚洲经典三级| 久久尤物视频| 午夜精品亚洲| 国产精品www色诱视频| 久久免费视频在线| 日韩手机在线导航| 老司机67194精品线观看| 这里只有精品电影| 欧美日本视频在线| 亚洲精品视频在线看| 麻豆久久精品| 久久久久久综合| 国产一区二区三区电影在线观看| 亚洲天堂成人| 一区二区三区欧美亚洲| 欧美日产一区二区三区在线观看| 亚洲国产日韩一区| 亚洲高清色综合| 欧美sm极限捆绑bd| 亚洲精品视频在线播放| 亚洲国产精品99久久久久久久久| 久久视频在线看| 亚洲二区在线视频| 欧美国产极速在线| 欧美激情偷拍| 一区二区国产日产| 亚洲一区二区三区成人在线视频精品| 欧美日韩高清免费| 亚洲在线一区| 亚洲欧美一区二区原创| 国产亚洲一级| 欧美mv日韩mv国产网站app| 久久久久久国产精品mv| 亚洲电影毛片| 亚洲欧洲精品一区二区| 欧美韩国日本综合| 亚洲一区二区日本| 亚洲男女自偷自拍图片另类| 国产美女精品人人做人人爽| 久久久久久久久久看片| 麻豆精品在线视频| 这里只有精品电影| 午夜精品久久久久久久99水蜜桃| 国产精品网站在线观看| 美日韩精品视频| 欧美精品久久久久久久久久| 亚洲一区二区三区四区在线观看 | 亚洲女同在线| 极品少妇一区二区三区精品视频| 免费不卡在线观看| 欧美日韩亚洲91| 久久久久久久网站| 欧美二区不卡| 久久精品官网| 欧美精品123区| 久久成人免费网| 欧美成人免费全部| 欧美在线观看一区| 欧美国内亚洲| 久久久蜜桃一区二区人| 欧美精品乱人伦久久久久久 | 国产精品视频午夜| 亚洲一区二区3| 久久精品国产在热久久| 亚洲欧洲偷拍精品| 亚洲一区二区在线视频| 亚洲欧洲日本国产| 欧美一区日韩一区| 亚洲一区日韩| 欧美激情小视频| 久久视频在线看| 国产精品久久久久久久久久尿 | 亚洲综合三区| 亚洲伦理一区| 久久久欧美精品sm网站| 香蕉国产精品偷在线观看不卡| 免费观看成人网| 久久综合九色综合久99| 欧美色精品天天在线观看视频 | 亚洲视频播放| 亚洲人成网站色ww在线| 欧美中文在线视频| 翔田千里一区二区| 欧美日韩免费在线| 亚洲欧洲日韩女同| 亚洲欧洲精品一区二区三区 | 久久久久久一区二区三区| 香蕉久久a毛片| 国产精品久久久久久久久婷婷| 欧美高清一区二区| 一区精品在线| 久久久精品久久久久| 久久久夜夜夜| 精品va天堂亚洲国产| 欧美一区二区三区四区在线观看地址| 亚洲无亚洲人成网站77777| 欧美国产三级| 亚洲精品乱码久久久久久蜜桃麻豆| 激情综合自拍| 美女性感视频久久久| 欧美韩日高清| 亚洲精品中文在线| 欧美—级高清免费播放| 亚洲欧洲在线播放| 99xxxx成人网| 欧美视频成人| 性欧美videos另类喷潮| 久久免费国产精品| 亚洲人成网站精品片在线观看| 欧美日韩第一区| 亚洲一区精品在线| 久久视频在线看| 日韩一级欧洲| 国产精品久久二区| 亚洲欧美综合国产精品一区| 久久国产精品一区二区三区四区| 一区二区在线视频| 欧美日韩久久| 欧美亚洲日本一区| 欧美激情第二页| 亚洲综合不卡| 亚洲视频精选在线| 在线色欧美三级视频| 久久尤物电影视频在线观看| 亚洲国产高清高潮精品美女| 亚洲一区二区三区777| 国产一区二区三区无遮挡| 免费亚洲网站| 亚洲午夜女主播在线直播| 久久一区激情| 在线亚洲免费视频| 国产字幕视频一区二区| 欧美激情中文字幕在线| 欧美一区二区三区精品电影| 欧美激情视频一区二区三区免费 | 亚洲国产精品国自产拍av秋霞| av成人国产| 国内精品久久久久久| 欧美区一区二| 久久精品视频在线观看| 在线亚洲免费| 亚洲高清免费在线| 久久精品噜噜噜成人av农村| 亚洲成在人线av| 国产精品理论片在线观看| 欧美99在线视频观看| 午夜精品短视频| 亚洲精品在线观看免费| 麻豆精品视频在线观看视频| 亚洲一区二区三区欧美| 亚洲人成网站在线观看播放| 国产一区二区三区四区老人| 欧美日韩国产综合久久| 美国三级日本三级久久99| 欧美有码在线观看视频| 亚洲尤物视频在线| 日韩视频中午一区|