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 抽象访问者角色,为该对象结构中具 ...
随机推荐
- 在Pycharm中使用AutoPEP8来检验代码的规范性
在学习python的过程中,我们经常会遇到代码不规范而导致的程序报错,代码的规范和严谨就显得尤为重要了,所以编写代码的过程中,我们需要遵循PE8规范,在Pycharm 中我们可以安装插件 AutoPE ...
- ssh 登录进入 docker container
1.Container安装ssh服务,博主的linux是centos ① 安装ssh sudo yum install openssh-server #安装ssh服务器 service sshd st ...
- docker 微镜像-alpine
刚想找maven自动发布项目到tomcat, 突然看到个好玩的, docker微镜像 -- alpine 直接粘一段: Alpine Linux Docker镜像基于Alpine Linux操作系统, ...
- C#直接用数字定义背景颜色
如下: tableLayoutPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte ...
- java面试④数据库部分
2.3.1 数据库的分类及常用的数据库 数据库分为:关系型数据库和非关系型数据库 关系数据库:mysql,oracle,sqlServer 非关系型:redis,mongoDB 2.3.2 简单介绍一 ...
- redis实战笔记(3)-第3章 Redis命令
第3章 Redis命令 本章主要内容 字符串命令. 列表命令和集合命令 散列命令和有序集合命令 发布命令与订阅命令 其他命令 在每个不同的数据类型的章节里, 展示的都是该数据类型所独有的. 最 ...
- springMVC对于Controller返回值的可选类型
2018-01-11 对于springMVC处理方法支持支持一系列的返回方式: (1)ModelAndView (2)Model (3)ModelMap (4)Map (5)View (6)Stri ...
- 如何学习JavaEE,项目又该如何做?
本文主要分为三个部分: 如何学习java基础 如何学习javaEE 你关心的项目问题 01 java基础学习 建议初学者看视频学习,不推荐看书.入门视频选择非常重要,最好是通俗易懂.深入浅出的教学视频 ...
- .NET编译过程
总结一下.NET的编译过程, 一般的高级编程语言会把代码编译成机器码,也就是我们说的非托管代码,执行在编译它的电脑上. 而.NET编译代码的时候会把高级编程语言编译成中间语言 运行在CLR(公共语言运 ...
- js this问题和es6箭头函数this问题
JS中this的四种用法 1.在一般函数方法中使用 this 指代全局对象 function test(){ this.x = 1; alert(this.x); } test(); //1 2.作为 ...