iOS设计模式 - 模板
iOS设计模式 - 模板

原理图

说明
定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。
源码
https://github.com/YouXianMing/iOS-Design-Patterns
//
// GameProtocol.h
// TemplatePattern
//
// Created by YouXianMing on 15/10/27.
// Copyright © 2015年 ZiPeiYi. All rights reserved.
// #import <Foundation/Foundation.h> @protocol GameProtocol <NSObject> @required /**
* 设置玩家个数
*
* @param count 数目
*/
- (void)setPlayerCount:(int)count; /**
* 返回玩家数目
*
* @return 玩家数目
*/
- (int)playerCount; /**
* 初始化游戏
*/
- (void)initializeGame; /**
* 开始游戏
*/
- (void)makePlay; /**
* 结束游戏
*/
- (void)endOfGame; @end
//
// Monopoly.h
// TemplatePattern
//
// Created by YouXianMing on 15/10/27.
// Copyright © 2015年 ZiPeiYi. All rights reserved.
// #import <Foundation/Foundation.h>
#import "GameProtocol.h" @interface Monopoly : NSObject <GameProtocol> @end
//
// Monopoly.m
// TemplatePattern
//
// Created by YouXianMing on 15/10/27.
// Copyright © 2015年 ZiPeiYi. All rights reserved.
// #import "Monopoly.h" @interface Monopoly () @property (nonatomic, assign) int gamePlayerCount; @end @implementation Monopoly - (void)setPlayerCount:(int)count { self.gamePlayerCount = count;
} - (int)playerCount { return self.gamePlayerCount;
} - (void)initializeGame { NSLog(@"Monopoly initialize");
} - (void)makePlay { NSLog(@"Monopoly makePlay");
} - (void)endOfGame { NSLog(@"Monopoly endOfGame");
} @end
//
// Chess.h
// TemplatePattern
//
// Created by YouXianMing on 15/10/27.
// Copyright © 2015年 ZiPeiYi. All rights reserved.
// #import <Foundation/Foundation.h>
#import "GameProtocol.h" @interface Chess : NSObject <GameProtocol> @end
//
// Chess.m
// TemplatePattern
//
// Created by YouXianMing on 15/10/27.
// Copyright © 2015年 ZiPeiYi. All rights reserved.
// #import "Chess.h" @interface Chess () @property (nonatomic, assign) int gamePlayerCount; @end @implementation Chess - (void)setPlayerCount:(int)count { self.gamePlayerCount = count;
} - (int)playerCount { return self.gamePlayerCount;
} - (void)initializeGame { NSLog(@"Chess initialize");
} - (void)makePlay { NSLog(@"Chess makePlay");
} - (void)endOfGame { NSLog(@"Chess endOfGame");
} @end
细节

iOS设计模式 - 模板的更多相关文章
- IOS设计模式之一(MVC模式,单例模式)
iOS 设计模式-你可能已经听说过这个词,但是你真正理解它意味着什么吗?虽然大多数的开发者可能都会认为设计模式是非常重要的,然而关于设计模式这一主题的文章却不多,并且有时候我们开发者在写代码的时候也不 ...
- iOS设计模式 - (1)概述
近期可自由安排的时间比較多, iOS应用方面, 没什么好点子, 就先放下, 不写了.花点时间学学设计模式. 之后将会写一系列博文, 记录设计模式学习过程. 当然, 由于我自己是搞iOS的, 所以之后设 ...
- 12. 星际争霸之php设计模式--模板模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- iOS 设计模式之工厂模式
iOS 设计模式之工厂模式 分类: 设计模式2014-02-10 18:05 11020人阅读 评论(2) 收藏 举报 ios设计模式 工厂模式我的理解是:他就是为了创建对象的 创建对象的时候,我们一 ...
- iOS设计模式之生成器
iOS设计模式之生成器 1.生成器模式的定义 (1): 将一个复杂的对象的构件与它的表示分离,使得相同的构建过程能够创建不同的表示 (2): 生成器模式除了客户之外还包括一个Director(指导者) ...
- IOS设计模式之三:MVC模式
IOS设计模式之三:MVC模式 模型-视图-控制器 这个模式其实应该叫做MCV,用控制器把model与view隔开才对,也就是model与view互相不知道对方的存在,没有任何瓜葛,他们就像一个团 ...
- iOS设计模式 - 享元
iOS设计模式 - 享元 原理图 说明 享元模式使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件:它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件.通常物件中的部分 ...
- iOS设计模式 - 责任链
iOS设计模式 - 责任链 原理图 说明 在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求.发出这个请求的客户端并不知道链 ...
- iOS设计模式 - 访问者
iOS设计模式 - 访问者 原理图 说明 表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作. 1.Visitor 抽象访问者角色,为该对象结构中具 ...
随机推荐
- centos6 内网可达,外网不可达 Network is unreachable
错误内容 [root@djx-2 yum.repos.d]# ping 3.0.82.21 connect: Network is unreachable [root@djx-2 yum.repos. ...
- Go url编码和字符转码
类似php中的urlencode 和htmlspecialchars: package main import ( "fmt" "html" "net ...
- 使用axios实现上传图片进度条
在最近做的项目中,一个手机页面最多要上传几十张图片,虽然对照片做了压缩处理,不过最后还是很大,如果网卡的话,上传的时间很差,如果一直在loading的话,用户都不知道什自己上传了多少,为了更直观的展现 ...
- mybatis在mysql中的分页扩展
applicationContext.xml <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlS ...
- 页面刷新 location.reload()
* 页面不刷新,但是加了location.reload()后,把炒作失败提示语都刷没了.//成功,不提示,刷新看数据变化ajax success:function(res){ if(res.code= ...
- ModelState.IsValid always returning true while mocking a request
ASB.net MVC 视图验证里有一个IValidatableObject接口.这里面有一个验证方法.通常我们表单提交的时候dto就是用一个实现IValidatableObject这个接口的实体. ...
- 【转】ArrayBlockingQueue浅析
ArrayBlockingQueue是常用的线程集合,在线程池中也常常被当做任务队列来使用.使用频率特别高.他是维护的是一个循环队列(基于数组实现),循环结构在数据结构中比较常见,但是在源码实现中还是 ...
- sql or语法
1.mysql中or语法的使用,在mysql语法中or使用注意点. 项目遇到坑,遍历发放奖励数据查询错误!!! $sql = 'SELECT * FROM `vvt_spread_doubleegg_ ...
- 用hmac验证客户端的合法性
服务器端程序 import os import hmac import socket def auth(conn): secret_key = b'rock' rand_b = os.urandom( ...
- C语言程序设计基础知识点概括
C语言程序设计基础知识点概括 C语言程序设计基础知识点1.函数是C语言的基本构成单位.main函数是C语言程序的唯一入口.2.C语言程序开发过程. 编译过程:将以.c或.cpp结尾的源程序文件经过编译 ...