iOS開發-簡單原廠模式

來源:互聯網
上載者:User

標籤:

設計模式(Design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。概念很長,iOS開發中最常遇到的有單例模式,觀察者模式(KVO),簡單原廠模式其實在開發中也非常常見,就是由工廠類根據傳入的參數,動態決定應該建立出對應的產品類的執行個體。

基礎概念

舉一個生活的例子是我們有各種中字開頭的銀行卡,我們每天都會消費,消費的時候每個銀行卡提示不同的資訊,我們可以先抽象出來一個銀行卡類: 

@interface BankCard : NSObject@property  (strong,nonatomic)  NSString  *cardName;@property   (strong,nonatomic) NSString  *cardNumber;-(void)cardConsume;@end

ABC銀行卡:

#import "ABCBankCard.h"@implementation ABCBankCard-(void)cardConsume{    NSLog(@"你的卡號%@的%@有一筆新的消費~",self.cardNumber,self.cardName);    NSLog(@"原文地址:http://www.cnblogs.com/xiaofeixiang/");}@end

ICBC銀行卡:

#import "ICBCBankCard.h"@implementation ICBCBankCard-(void)cardConsume{    NSLog(@"你的卡號%@的%@有一筆新的消費~",self.cardNumber,self.cardName);    NSLog(@"部落格園-FlyElephant");}@end

 

工廠實現

工廠類的定義:

#import <Foundation/Foundation.h>#import "BankCard.h"#import "ICBCBankCard.h"#import "ABCBankCard.h"typedef NS_ENUM(NSInteger, BankCardEnum) {    BankCardICBC,    BankCardABC};@interface SimpleFactory : NSObject+(BankCard *)createBankCard:(BankCardEnum)type;@end

 

Factory 方法的實現:

#import "SimpleFactory.h"@implementation SimpleFactory+(BankCard *)createBankCard:(BankCardEnum)type{    BankCard  *bankCard;    switch (type) {        case BankCardICBC:            bankCard=[[ICBCBankCard alloc]init];            break;        case BankCardABC:            bankCard=[[ABCBankCard alloc]init];            break;    }    return bankCard;}@end

測試工廠: 

    BankCard  *card=[SimpleFactory createBankCard:BankCardICBC];    [email protected]"中國工商銀行";    [email protected]"0001";    [card cardConsume];    card=[SimpleFactory createBankCard:BankCardABC];    [email protected]"中國農業銀行";    [email protected]"0002";    [card cardConsume];

效果:

簡單工廠的優點:

 簡單原廠模式的核心是工廠類,該類中含有必要的判斷邏輯,可以決定在什麼時候建立哪一個產品類的執行個體,用戶端可以免除直接建立產品對象的責任,而僅僅負責“消費”產品。 簡單原廠模式實現了對責任的分割。

缺點:

模式中工廠類集中了所有的產品建立邏輯,形成一個無所不知的全能類,當所有的類不是繼承自同一個父類的時候擴充比較困難。

iOS開發-簡單原廠模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.