麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

EffectiveObjective-C2.0之Note.04

2019-11-14 18:46:10
字體:
供稿:網(wǎng)友

類族”(class cluster)是一種很有用的模式(pattern),可以隱藏“抽象基類”(abstract base class)背后的實現(xiàn)細節(jié)。Objective-C的系統(tǒng)框架中普遍使用此模式。

創(chuàng)建類族

現(xiàn)在舉例來演示如何創(chuàng)建類族。假設(shè)有一個處理雇員的類,每個雇員都有“名字”和“薪水”這兩個屬性,管理者可以命令其執(zhí)行日常工作。但是,各種雇員的工作內(nèi)容卻不同。經(jīng)理在帶領(lǐng)雇員做項目時,無須關(guān)心每個人如何完成其工作,僅需指示其開工即可。

首先要定義抽象基類:

    typedef NS_ENUM(NSUInteger, EOCEmployeeType) {          EOCEmployeeTypeDeveloper,          EOCEmployeeTypeDesigner,          EOCEmployeeTypeFinance,      };           @interface EOCEmployee : NSObject           @PRoperty (copy) NSString *name;      @property NSUInteger salary;           // Helper for creating Employee objects      + (EOCEmployee*)employeeWithType:(EOCEmployeeType)type;           // Make Employees do their respective day's work      - (void)doADaysWork;           @end           @implementation EOCEmployee           + (EOCEmployee*)employeeWithType:(EOCEmployeeType)type {          switch (type) {              case EOCEmployeeTypeDeveloper:                  return [EOCEmployeeDeveloper new];                  break;              case EOCEmployeeTypeDesigner:                  return [EOCEmployeeDesigner new];                  break;              case EOCEmployeeTypeFinance:                  return [EOCEmployeeFinance new];                  break;          }      }           - (void)doADaysWork {          // Subclasses implement this.      }           @end 

每個“實體子類”(concrete subclass)都從基類繼承而來。例如:

    @interface EOCEmployeeDeveloper : EOCEmployee      @end           @implementation EOCEmployeeDeveloper           - (void)doADaysWork {          [self writeCode];      }           @end 

在本例中,基類實現(xiàn)了一個“類方法”,該方法根據(jù)待創(chuàng)建的雇員類別分配好對應(yīng)的雇員類實例。這種“工廠模式”(Factory pattern)是創(chuàng)建類族的辦法之一。

Note:如果對象所屬的類位于某個類族中,那么在查詢其類型信息(introspection)時就要當心了,調(diào)用isMemberOfClass返回的是NO,因為創(chuàng)建的是其子類的實例。(可用isKindOfClass

系統(tǒng)框架中有許多類族。大部分collection類都是類族,例如NSArray與其可變版本NSMutableArray。

新增實體子類:

  1. 子類應(yīng)該繼承自類族中的抽象基類。
  2. 若要編寫NSArray類族的子類,則需令其繼承自不可變數(shù)組的基類或可變數(shù)組的基類。
  3. 子類應(yīng)該定義自己的數(shù)據(jù)存儲方式。
 
 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美黄色免费视频 | 日本中文字幕网址 | 久久亚洲一区二区三区成人国产 | 国产午夜亚洲精品理论片大丰影院 | 欧美成人自拍 | 精国品产一区二区三区有限公司 | 久久久久久久久久91 | 国产精品自拍啪啪 | 国产精品一区二区三区在线看 | 国产日韩免费观看 | 国产亚洲精品久久久久5区 男人天堂免费 | 性生活香蕉视频 | 久久99精品视频在线观看 | 欧美中文字幕一区二区 | 97久久精品一区二区三区观看 | 国内精品久久久久久2021浪潮 | 成人一级黄色 | 91成人免费看片 | 欧洲狠狠鲁 | 爱福利视频网 | 色999中文字幕 | 久久网站免费 | 免费国产自久久久久三四区久久 | 免费黄色在线电影 | 亚洲免费在线视频 | 羞羞的视频在线免费观看 | 国产三级a三级三级 | 亚州综合网 | 日本搞逼视频 | 日韩做爰视频免费 | 鲁人人人鲁人人鲁精品 | 亚洲第一页中文字幕 | 日产精品一区二区三区在线观看 | 中文字幕www | 久久国产免费视频 | 中文字幕亚洲视频 | 一色视频 | 国产做爰全免费的视频黑人 | 一级电影免费看 | 日韩激情在线视频 | 久久6国产 |