Builder(建造模式)
將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離潦蝇,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示款熬。它可以將復(fù)雜對(duì)象的建造過程抽象出來(抽象類別),使這個(gè)抽象過程的不同實(shí)現(xiàn)方法可以構(gòu)造出不同表現(xiàn)(屬性)的對(duì)象攘乒。
SDWebImage的SDWebImageDownloader和SDWebImageDownloaderOperation就是director和builder之間的關(guān)系贤牛。前者不負(fù)責(zé)具體的下載操作,只負(fù)責(zé)管理builder则酝,builder負(fù)責(zé)圖片的具體下載殉簸。
VC.m
HCDPersonBuilderDirector *director = [[HCDPersonBuilderDirector alloc]init];
HCDPresionBuilder builder = [[HCDPersonFatBuilder alloc]init];
//為director指定builder
director.builder = builder;
//director發(fā)出構(gòu)建的指令,builder負(fù)責(zé)具體的建造過程
[director buildPerson];
HCDPersonBuilderDirector.h // 主管類:管理對(duì)象及操作
@interface HCDPersonBuilderDirector : NSObject
@property(nonatomic, strong)HCDPresionBuilder builder;
-(void)buildPerson;
@end
HCDPersonBuilderDirector.m
@implementation HCDPersonBuilderDirector
-(void)buildPerson{
NSLog(@"===============director指揮builder開始建造====================");
[self.builder buildPerson];
}
@end
HCDPresionBuilder.h // builder 協(xié)議類
@protocol HCDPresionBuilder <NSObject>
-(void)buildHead;
-(void)buildBody;
-(void)buildArmLeft;
-(void)buildArmRight;
-(void)buildLegLeft;
-(void)buildLegRight;
- (void)buildPerson;
@end
typedef id<HCDPresionBuilder> HCDPresionBuilder;