參考: iOS設計模式四部曲(一):建立型模式 內附Demo 大話設計模式之oc實現23種模式 風中獨思--設計模式 <簡書 — 劉小壯> http://www.jianshu.com/p/750b82fa6a62
用OC程式碼認識設計模式(一)--建立型模式 用OC程式碼認識設計模式(二)--結構型模式 用OC程式碼認識設計模式(三)--行為型模式 用OC程式碼認識六大設計原則 MVC、MVP、MVVM
####建立型模式 #####1、原型模式(Prototype) 定義:原型模式就是允許你建立現有物件的副本並根據需要進行修改,而不是從頭開始建立物件並進行設定。 理解:一句程式碼複製一個物件
OC程式碼:copy、mutableCopy
NSArray *array = [[NSArray alloc] initWithObjects:@1, nil];
NSArray *array2 = array.copy;
複製程式碼
#####2、單例模式(Singleton) 定義:保證一個類僅有一個例項,並提供一個訪問它的全域性訪問點。 OC程式碼
+ (instancetype)sharedInstance {
static id shareInstance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
shareInstance = [[self alloc] init];
});
return shareInstance;
}
複製程式碼
3、工廠模式
######(1)簡單工廠,就是一個方法,判斷引數,new不同的子類
//CarFactory.m
+ (Car *)createCarWithType:(NSIntger)passengersCount {
if (passengersCount < 2) {
return [[SportCar alloc] init];
} else if (passengersCount < 4) {
return [[NormalCar alloc] init];
} else {
return [[SUV alloc] init];
}
}
複製程式碼
######(2)工廠方法模式(FactoryMethod) 定義:讓子類決定例項化哪一個類。工廠方法使得類的例項化延遲到其子類。 OC程式碼
//UILabel、UIButton 都是UIView
UILabel *label = [UILabel new];
UIButton *button = [UIButton new];
複製程式碼
######(3)抽象工廠模式(AbstractFactory) 定義:抽象工廠模式是工廠方式模式的升級版本
// 繼承BaseFactory(抽象工廠),可以生產手機、生產電視
LeshiFactory *leshiFactory = [LeshiFactory new];// 樂視工廠
XiaoMiFactory *xiaomiFactory = [XiaoMiFactory new];// 小米工廠
// 繼承PhoneProduct
LeshiPhoneProduct *leshiPhone = [leshiFactory createPhone];// 樂視手機
XiaoMiPhoneProduct *xialmiPhone = [xiaomiFactory createPhone];// 小米手機
// 繼承TVProduct
LeshiTVProduct *leshiTV = [leshiFactory createTV];// 樂視電視
XiaoMiTVProduct *xialmiTV = [xiaomiFactory createTV];// 小米電視
複製程式碼
#####4、建立者模式(Builder) 定義:使用多個簡單的物件一步一步構建成一個複雜的物件。 將一個複雜物件的構建與它的表現分離,使得同樣的構建過程可以建立不同的表現。
組裝電腦例子
// 組裝電腦
Builder *builder = [Builder new];
[builder setBuilderCpu:@"i7"];
[builder setBuilderMainboard:@"Intel主機板"];
[builder setBuilderRam:@"金士頓16G"];
// 電腦產品
Computer *computer = [builder computer];
複製程式碼