生成器模式——设计模式系列
2013-06-21 11:46
316 查看
生成器模式有两个核心概念,一个是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
}
分享到:
转载:http://blog.csdn.net/dickenslian/article/details/7441819
//最终产品
@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
}
分享到:
转载:http://blog.csdn.net/dickenslian/article/details/7441819
相关文章推荐
- 设计模式系列之生成器模式
- 生成器模式——设计模式系列
- Android设计模式系列(12)--SDK源码之生成器模式(建造者模式)
- Android设计模式系列(12)--SDK源码之生成器模式(建造者模式)
- Android设计模式系列(12)--SDK源码之生成器模式(建造者模式)
- Android设计模式系列(12)--SDK源码之生成器模式(建造者模式)
- 极速理解设计模式系列:12.责任链模式(Chain of Responsibility Pattern)
- [.NET领域驱动设计实战系列]专题四:前期准备之工作单元模式(Unit Of Work)
- 【出版直播】博客园征途系列,《设计模式——基于C#的工程化实现及扩展》定价修改
- 5.偏头痛杨的常见设计模式入门系列之观察者模式篇
- 深入理解JavaScript系列(29):设计模式之装饰者模式
- 设计模式学习系列一:单例模式
- php设计模式学习系列(三)工厂模式
- 设计模式系列一――数据库常用模式
- Java设计模式--生成器模式
- 设计模式学习系列八:代理(Proxy)模式
- 设计模式系列-03-创建模式-工厂方法
- 深入理解JavaScript系列(36):设计模式之中介者模式
- 设计模式总结篇系列:代理模式(Proxy)
- Java之------单机版书店管理系统(设计思想和设计模式系列七)库存模块