client-director-builder
将一个复杂对象的构建与它的表现分离,使得同样的构建过程可以创建不同的表现。
生成器模式能够帮助构建涉及部件与表现的各种组合的对象。
特点
- 以多个步骤构建对象
- 以多种方式构建对象
- 在构建过程的最后一步返回产品
- 专注一个特定产品
Demo
@implementation CharacterBuilder
- (CharacterBuilder *)buildNewCharacter {
_character = [[Character alloc] init];
return self;
}
- (CharacterBuilder *)buildStrength:(float)value {
_character.strength = value;
return self;
}
- (CharacterBuilder *)buildStamina:(float)value {
_character.stamina = value;
return self;
}
- (CharacterBuilder *)buildIntelligence:(float)value {
_character.intelligence = value;
return self;
}
@end
使用
Client
实例化一个CharacterBuilder
,调用其方法定制charactor
,最后再通过CharacterBuilder
实例把自己的character
返回给Client
。