iOS设计模式-生成器

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

类型:对象创建

类图:

#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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395410.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Android 应用案例开发大全(第二版)》——导读

本节书摘来自异步社区《Android 应用案例开发大全&#xff08;第二版&#xff09;》一书中的目录 &#xff0c;作者 吴亚峰 , 于复兴 , 杜化美&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 目 录 第1章 初识庐山真面目——Android简介 1.1 Android的诞生 1…

模块--sys模块

sys模块是与python解释器交互的一个接口 import sys sys.path #python解释器找模块的环境变量import sys print(sys.path)结果:[H:\\王文静\\python\\4练习\\课堂练习, H:\\王文静\\python, C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\pyth…

匿名方法

与前面的可空类型是一样的&#xff0c;匿名方法也是C# 2.0里面提出来的。 1 匿名方法 1.1 什么是匿名方法&#xff1f; 顾名思义&#xff0c;就是没有名称的方法&#xff0c;因为没有名称&#xff0c;匿名方法只能在函数定义&#xff08;匿名方法是把方法的实现和定义嵌套在了一…

使用React,Redux和Router进行真正的集成测试

by Marcelo Lotif通过马塞洛洛蒂夫(Marcelo Lotif) 使用React&#xff0c;Redux和Router进行真正的集成测试 (Real integration tests with React, Redux and Router) After being bitten a couple of times by bad refactoring and a broken app — even with all my tests…

Go语言从入门到精通 - 数据类型转换

本节核心内容 介绍 Go语言数据类型转换的格式介绍 数据转换代码示例介绍 数据转换过程中的注意事项 本小节视频教程和代码&#xff1a;百度网盘 可先下载视频和源码到本地&#xff0c;边看视频边结合源码理解后续内容&#xff0c;边学边练。 Go语言数据类型转换 Go 语言使用类型…

JNI通过线程c回调java层的函数

1、参看博客&#xff1a;http://www.jianshu.com/p/e576c7e1c403 Android JNI 篇 - JNI回调的三种方法&#xff08;精华篇&#xff09; 2、参看博客&#xff1a; JNI层线程回调Java函数关键点及示例 http://blog.csdn.net/fu_shuwu/article/details/41121741 3 http://blog.cs…

signature=f7a4b29b93ef2b36608792fdef7f454a,Embedding of image authentication signatures

摘要&#xff1a;A method (), an apparatus, a computer readable medium and use of said method for authenticating an audio-visual signal (), such as a digital image or video, are disclosed. A signature is derived from all image regions, including areas with …

glob

主要是用来在匹配文件&#xff0c;相当shell中用通配符匹配. 用法: glob.glob(pathname) # 返回匹配的文件作为一个列表返回 glob.iglob(pathname) # 匹配到的文件名&#xff0c;返回一个迭代器 ps: pathname是路径, 可以是绝对和相对路径 匹配当前目录下有一个数字开头…

构建微服务:Spring boot 入门篇

Spring官方网站本身使用Spring框架开发&#xff0c;随着功能以及业务逻辑的日益复杂&#xff0c;应用伴随着大量的XML配置文件以及复杂的Bean依赖关系。随着Spring 3.0的发布&#xff0c;Spring IO团队逐渐开始摆脱XML配置文件&#xff0c;并且在开发过程中大量使用“约定优先配…

img 加载 svg占位符_如何使用SVG作为占位符以及其他图像加载技术

img 加载 svg占位符by Jos M. Prez由JosM.Prez 如何使用SVG作为占位符以及其他图像加载技术 (How to use SVG as a Placeholder, and Other Image Loading Techniques) I’m passionate about image performance optimisation and making images load fast on the web. One of…

hibernate 注解

参考链接地址&#xff1a;https://blog.csdn.net/wx5040257/article/details/78697119 主键生成策略:https://www.cnblogs.com/ph123/p/5692194.html 注解转载于:https://www.cnblogs.com/wangxuekui/p/10287647.html

iOS - UIScrollView

前言 NS_CLASS_AVAILABLE_IOS(2_0) interface UIScrollView : UIView <NSCoding>available(iOS 2.0, *) public class UIScrollView : UIView, NSCoding 移动设备的屏幕大小是极其有限的&#xff0c;因此直接展示在用户眼前的内容也相当有限。当展示的内容较多&…

机器学习的展望

现阶段越来越多的投入到机器学习的热潮中来&#xff0c;有的人很是兴奋&#xff0c;认为这是一场新和革命&#xff0c;一场终极人工智能来临的前夜。也有人表示悲观&#xff0c;认为不仅机器学习不代表终极人工智能&#xff0c; 也还非常不成熟。 大量的新生代投入到这个领域&a…

BZOJ3453 XLkxc(拉格朗日插值)

显然f(i)是一个k2项式&#xff0c;g(x)是f(i)的前缀和&#xff0c;则显然其是k3项式&#xff0c;插值即可。最后要求的东西大胆猜想是个k4项式继续插值就做完了。注意2p>maxint…… #include<iostream> #include<cstdio> #include<cmath> #include<cs…

电邮地址_利用这些简单的技巧来充分利用电子邮件的强大功能

电邮地址Let’s talk about some email features that are surprisingly under-used, and that can really benefit you — if you know how to use them. This article is suitable for both users and developers who want to become email Jedi.让我们讨论一些电子邮件功能&…

inputstream重新赋值之前需要close吗_变量提升真的搞懂了吗?打脸的一道题

变量提升真的搞懂了吗&#xff1f;打脸的一道题我们知道JS代码在执行之前&#xff0c;会做一系列的事情&#xff0c;其中就包括变量提升&#xff0c;原本以为把变量提升搞懂的我&#xff08;因为这两天一直在研究变量提升&#xff0c;自我感觉已经很良好了&#xff0c;哈哈哈&a…

html5语义化 兼容,HTML5语义化标签,兼容性问题

HTML5不仅仅作为HTML标记语言的一个最新版本&#xff0c;更重要的是它制定了web应用开发的一系列标准&#xff0c;成为第一个将web做为应用开发平台的HTML语言。HTML5定义了一系列的新元素&#xff0c;如新语义化标签&#xff0c;智能表单&#xff0c;多媒体标签等&#xff0c;…

Swift之 vm10虚拟机安装Mac OS X10.10教程

VM10装Mac OS X 10.9.3及更新到Mac OS X 10.10,让你的windows也能玩Swift 。 近期WWDC放出终极大招——新的编程语言Swift(雨燕),导致一大波程序猿的围观和跃跃欲试。当然了,工欲善其事,必先利其器,所以对于那些没有Mac又想要尝鲜的小伙伴肯定非常为难。可是&#xff0c;请放…

如何使用json开发web_如何通过使用JSON Web令牌简化应用程序的身份验证

如何使用json开发webby Sudheesh Shetty由Sudheesh Shetty 如何通过使用JSON Web令牌简化应用程序的身份验证 (How to simplify your app’s authentication by using JSON Web Token) Every application we come across today implements security measures so that the user…

c++ 实现录音并且指定到文件_通话自动录音,留下美好回忆,记录完整录音证据...

手机通话&#xff0c;如果自动录音多好&#xff0c;许多人与我一样抱有这个想法。记得华为Android版本5.0时代&#xff0c;手机没有自动录音功能&#xff0c;我一直到网上下载自动通话录音软件&#xff0c;有时甚至是下载ROOT版的带自动通话功能的EMUI版本进行刷机安装。那个时…