定义:将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。

类型:对象创建

类图:

#import <Foundation/Foundation.h>
@interface Character : NSObject
@property(nonatomic, assign)float protection;
@property(nonatomic, assign)float power;
@property(nonatomic, assign)float strength;
@property(nonatomic, assign)float stamina;
@property(nonatomic, assign)float intelligence;
@property(nonatomic, assign)float agility;
@property(nonatomic, assign)float aggressiveness;
@end

#import "Character.h"@implementation Character- (instancetype)init{if (self = [super init]) {_protection = 1.0;_power = 1.0;_strength = 1.0;_stamina = 1.0;_intelligence = 1.0;_agility = 1.0;_aggressiveness = 1.0;}return self;
}@end

#import <Foundation/Foundation.h>
#import "Character.h"@interface CharacterBuilder : NSObject{Character * _character;
}
@property(nonatomic, readonly)Character *character;- (CharacterBuilder *)buildNewCharacter;
- (CharacterBuilder *)builStrength:(float)value;
@end

#import "CharacterBuilder.h"@implementation CharacterBuilder- (CharacterBuilder *)buildNewCharacter{_character = [[Character alloc]init];return self;
}
- (CharacterBuilder *)builStrength:(float)value{_character.strength = value;return self;
}@end

#import "CharacterBuilder.h"@interface StandardCharacterBuilder : CharacterBuilder@end

#import "StandardCharacterBuilder.h"@implementation StandardCharacterBuilder- (CharacterBuilder *)builStrength:(float)value{_character.protection = value;_character.power = value;return [super builStrength:value];
}@end

#import <Foundation/Foundation.h>
#import "StandardCharacterBuilder.h"@interface ChasingGame : NSObject- (Character *)createPlayer:(CharacterBuilder *)builder;
- (Character *)createEnemy:(CharacterBuilder *)builder;@end

#import "ChasingGame.h"@implementation ChasingGame- (Character *)createPlayer:(CharacterBuilder *)builder{[builder buildNewCharacter];[builder builStrength:50.0];return [builder character];
}- (Character *)createEnemy:(CharacterBuilder *)builder{[builder buildNewCharacter];[builder builStrength:80.0];return [builder character];
}@end

转载于:https://www.cnblogs.com/muzijun/p/5749750.html

iOS设计模式-生成器相关推荐

  1. iOS设计模式 - 生成器

    iOS设计模式 - 生成器 原理图 说明 1. 将构建复杂对象的过程拆分成一个一个的模块,通过统一的指导者来指导对象的构建过程称之为生成器模式 2. 生成器模式适合用于构建组合的对象 源码 https ...

  2. iOS设计模式四部曲(三):行为型模式 内附Demo

    本篇是四部曲的第三篇,第一篇请点这里iOS设计模式四部曲(一):创建型模式,第二篇请点击这里iOS设计模式四部曲(二):结构型模式.由于个人能力有限,文中难免有一些遗漏或者错误,请各位看官不吝赐教!谢 ...

  3. iOS设计模式 - 备忘录

    iOS设计模式 - 备忘录 原理图 说明 1. 在不破坏封装的情况下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态 2. 本人已经将创建状态与恢复状态 ...

  4. iOS设计模式 - 组合

    iOS设计模式 - 组合 原理图 说明 将对象组合成树形结构以表示"部分-整体"的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性.掌握组合模式的重点是要理解清楚 & ...

  5. 设计模式 生成器_生成器设计模式的应用

    设计模式 生成器 嗨,您好! 今天,我将分享我制作的全新设计模式系列的第一个. 构建器设计模式是开发严肃的应用程序时非常有用且通用的模式. 在这篇文章中,我将提供一个很小的构建器模式框架,因此您随时可 ...

  6. iOS设计模式 - 享元

    iOS设计模式 - 享元 原理图 说明 享元模式使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件:它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件.通常物件中的部分 ...

  7. iOS设计模式 - 迭代器

    iOS设计模式 - 迭代器 原理图 说明 提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示. 源码 https://github.com/YouXianMing/iOS-Des ...

  8. iOS设计模式 - 桥接

    iOS设计模式 - 桥接 示意图 说明 1. 桥接模式为把抽象层次结构从实现中分离出来,使其可以独立变更,抽象层定义了供客户端使用的上层抽象接口,实现层次结构定义了供抽象层次使用的底层接口,实现类的引 ...

  9. [译] iOS 设计模式进阶

    原文地址:Intermediate Design Patterns in Swift 原文作者:raywenderlich.com 译文出自:掘金翻译计划 本文永久链接:github.com/xitu ...

  10. iOS 设计模式浅析 0 - 前言

    小弟不才, 但又喜欢分享一些自己知道的小知识, so 斗胆写下 iOS 常用设计模式的实用和对其的见解. 如果有错的地方请联系我 QQ: 573880506, 不胜感激(毕竟程序员, 标点符号都用的英 ...

最新文章

  1. 这八个步骤,Python让你轻松爬取B站弹幕,网友看了都说6
  2. “昊论坛”热力来袭!一网打尽【微生物绝对定量】技术特色和应用
  3. python官网下载安装教程-各种版本的Python下载安装教程
  4. 使用Lucene开发自己的搜索引擎
  5. 图解Android - 如何看Android的UML 图?
  6. 45个案例一一破解win32k.sys蓝屏
  7. 使用 Castal DynamicProxy 简化 Silverlight 数据绑定
  8. numpy中的savez()同时保存数组、字符串、字典数据
  9. 55种网页常用小技巧(转载)
  10. Python基础:搭建开发环境(1)
  11. android 语音搜索动画,Android自定义控件实现UC浏览器语音搜索效果
  12. C语言可变参数函数的使用及相关函数介绍
  13. 最简单的排序算法(C和C++实现)
  14. idea java文件显示j_IDEA 快捷使用指南
  15. 猫工智能:卷积神经网络层的实现
  16. 主成分分析(PCA)与线性判别分析(LDA)的区别与联系
  17. 职称最新消息:2022年开始湖北全面实行职称电子证书
  18. 网站备案必须有服务器吗,域名备案必须有服务器吗
  19. COSO内部控制框架
  20. 微信开发之微信公众号

热门文章

  1. 二维有限元方程matlab,有限元法求解二维Poisson方程的MATLAB实现
  2. 华菱重卡仪表指示说明_仪表装置11种常见故障的解决方法
  3. php jquery ajax登录,jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
  4. python xlwt写入已有表_Python中,添加写入数据到已经存在的Excel文件
  5. NYOJ 24 素数距离问题
  6. linker `cc` not found
  7. 【经验贴】smartCarers在比赛后如何获取更好的发展
  8. 系统固件升级_固件和操作系统之间的差异
  9. 第二章 染色热力学理论单元测验
  10. Python中的a+=a和a=a+a的区别(认真看完后,我相信你一定会回来感谢我的)