Builder(建造模式)
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。
SDWebImage的SDWebImageDownloader和SDWebImageDownloaderOperation就是director和builder之间的关系。前者不负责具体的下载操作,只负责管理builder,builder负责图片的具体下载。
VC.m
HCDPersonBuilderDirector *director = [[HCDPersonBuilderDirector alloc]init];
HCDPresionBuilder builder = [[HCDPersonFatBuilder alloc]init];
//为director指定builder
director.builder = builder;
//director发出构建的指令,builder负责具体的建造过程
[director buildPerson];
HCDPersonBuilderDirector.h // 主管类:管理对象及操作
@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 协议类
@protocol HCDPresionBuilder <NSObject>
-(void)buildHead;
-(void)buildBody;
-(void)buildArmLeft;
-(void)buildArmRight;
-(void)buildLegLeft;
-(void)buildLegRight;
- (void)buildPerson;
@end
typedef id<HCDPresionBuilder> HCDPresionBuilder;
网友评论