生成器模式——设计模式系列

        生成器模式有两个核心概念,一个是Director(指导者)、一个是Builder(生成器)。Builder知道如何在缺少某些特定信息的情况下建造产品,Director知道Builder应该建造什么,以参数向其提供缺少的信息来建造特定产品。生成器关注分步创建复杂对象,在最后一步返回产品。以下以代码进行说明。

//最终产品

@interface Character : NSObject 

{

 @private

 float protection_;

 float power_;

 float strength_;

 float stamina_;

 float intelligence_;

 float agility_;

 float aggressiveness_;

}

@end

=================================================================

//父类Builder

@interface CharacterBuilder : NSObject 

{

 @protected

 Character *character_;

}

@property (nonatomic,readonly) Character *character;

- (CharacterBuilder *) buildNewCharacter;

- (CharacterBuilder *) buildStrength:(float) value;

- (CharacterBuilder *) buildStamina:(float) value;

- (CharacterBuilder *) buildIntelligence:(float) value;

- (CharacterBuilder *) buildAgility:(float) value;

- (CharacterBuilder *) buildAggressiveness:(float) value;

@end

=================================================================


//实现类Builder

@interface StandardCharacterBuilder : CharacterBuilder 

{


}


// overriden methods from the abstract CharacterBuilder

- (CharacterBuilder *) buildStrength:(float) value;

- (CharacterBuilder *) buildStamina:(float) value;

- (CharacterBuilder *) buildIntelligence:(float) value;

- (CharacterBuilder *) buildAgility:(float) value;

- (CharacterBuilder *) buildAggressiveness:(float) value;


@end

=================================================================


//Director

@interface ChasingGame : NSObject 

{


}

- (Character *) createPlayer:(CharacterBuilder *) builder;

- (Character *) createEnemy:(CharacterBuilder *) builder;

@end

=================================================================


//客户端调用代码

- (void)viewDidLoad 

{

  [superviewDidLoad];

  

 CharacterBuilder *characterBuilder = [[[StandardCharacterBuilderalloc] init] autorelease];

 ChasingGame *game = [[[ChasingGamealloc] init] autorelease];

  

  Character *player = [game createPlayer:characterBuilder];

  Character *enemy = [game createEnemy:characterBuilder];

  

 // do something else with the

 // player and enemey

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值