@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

Normal
0
false

10 pt
0
2

false
false
false

EN-US
ZH-CN
X-NONE

$([{£¥·‘“〈《「『【〔〖〝﹙﹛﹝$(.[{£¥
!%),.:;>?]}¢¨°·ˇˉ―‖’”…‰′″›℃∶、。〃〉》」』】〕〗〞︶︺︾﹀﹄﹚﹜﹞!"%'),.:;?]`|}~¢

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:Calibri;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}

 

课程名称:iOS与设计模式

一、     简介

根据讲师十多年奋战在一线的实战经验,详细剖析对设计模式的理解与实践,尤其是结合最近几年来在iOS领域的思考和研究。本课程系列讲介绍GOF经典设计模式以及面向对象设计的5大原则,分析这些设计模式在iOS中的实际使用场景,并使用大量案例,在短短的几堂课中,帮助学员迅速掌握学习设计模式的方法。

本课程让学员掌握二十多个设计模式在Android中的使用场景,理解模式背后深层次的思想,更重要的是,学会如何学习一门新技术。

本课程对于开发以下App产品特别有帮助:

1、千万级用户的App产品。

2、业务功能繁多。

学习本课程应具备下列基础知识:

1、1-2年iOS开发经验。

2、对设计模式有一些了解或接触。

 

二、     培训大纲(2天)

第一天 上午

第1讲 SOLID五大原则及UML图绘制

1.       
单一性原则

l   一个类只干一件事情

l  
从ViewController中剥离UITableView

2.       
开闭原则

l   对扩展开放,对修改封闭

l   从switch-case谈起

3.       
里氏替换原则

l   父类,子类?

l   对多态的重新认识

l   白马与马

4.       
依赖倒置原则

l   依赖于抽象,而不是依赖于具体

l   模版方法

l   从WebService到JSON

5.       
接口隔离原则

l   类之间的依赖,建立于最小粒度的接口

l   看人下菜碟

l   宽窄接口

6.       
迪米特法则

l   不要和陌生人说话

7.       
UML图绘制

l   接口、类

l   类的关系(关联、依赖、聚合、组合)

8.       
总结

l   组合,还是继承?

l   可插拔技术

l   面向接口编程

第2讲
创建型设计模式(一)

1.       
简单工厂

l   定义及UML图、通用代码实现

l   iOS中的使用场景:ViewController的viewDidLoad方法

l   iOS中的一个例子:文件存储

2.       
工厂模式

l   定义及UML图、通用代码实现

l   简单工厂与工厂的微小区别

l   iOS中的使用场景:两步对象创建法

l   反射与工厂模式的配合

第一天 下午

第1讲
创建型设计模式(二)

1.       
单例模式

l   定义及UML图、通用代码实现

l   多例

l   iOS的内部支持:UIApplication和UIAccelerometer

l   iOS中的使用场景:单例宏

3.       
原型模式

l   定义及UML图、通用代码实现

l   浅拷贝和深拷贝

l   NSCoping

l   NSCoding

l   App中的使用场景:再来一单

4.       
生成器模式

l   定义及UML图、通用代码实现

l   编写一个例子:绘制笑脸

l   变体:Director的蜕化

第2讲
构造型设计模式(一)

1.       
委托模式

l   神奇的delegate

l   委托模式的使用场合

2.       
适配器模式

l   定义及UML图、通用代码实现

l   类适配器和对象适配器

l   一个例子:变压器

l   iOS中的内部支持:Delegate以及UITableView

l   使用Block实现适配器模式

3.       
桥接模式

l   定义及UML图、通用代码实现

l   两个维度的简单工厂

l   加法,还是乘法?

l   编写一个例子:蜡笔与水彩笔

4.       
代理模式

l   定义及UML图、通用代码实现

l   静态代理和动态代理

l   远程代理

l   虚拟代理

l   保护代理

l   iOS中的内部支持:NSProxy

第二天 上午

第1讲
构造型设计模式(二)

1.       
组合模式

l   温习一下递归算法

l   定义及UML图、通用代码实现

l   实现的两种方式

l   一个现实中的例子:山上有座庙

l   iOS中的内部支持:UIView的层级结构

2.       
享元模式

l   定义及UML图、通用代码实现

l   不变模式

l   享元是多例与不变模式的组合

l   自己编写一个例子:围棋

3.       
装饰器模式

l   定义及UML图、通用代码实现

l   编写一个例子:炒菜

l   给工厂增加新方法

l   使用Category来实现装饰器模式

4.       
外观模式

l   定义及UML图、通用代码实现

l   与单一职责设计原则的冲突

第2讲
行为型设计模式(一)

1.       
职责链模式

l   定义及UML图、通用代码实现

l   写一个例子:游戏中的伤害计算

l   iOS中的内部支持:UIView中的事件处理和动作消息

2.       
模版方法模式

l   定义及UML图、通用代码实现

l   基于策略模式的排序算法

l   iOS中的内部支持:UIView的钩子方法drawRect

3.       
命令模式

l   定义及UML图、通用代码实现

l   例子1:玉皇大帝派太上老君封孙悟空为齐天大圣

l   回滚(undo)

l   在iOS中的应用:NSInvocation与NSUndoManager

4.       
备忘录模式

l   定义及UML图、通用代码实现

l   回滚机制的另一种实现

l   例子:单机游戏的保存和加载

l   宽窄接口:IMemento

第二天 下午

第1讲
行为型设计模式(二)

1.       
迭代器模式

l   定义及UML图、通用代码实现

l   在iOS中的内部支持:NSEnumerator及延伸

2.       
策略模式

l   定义及UML图、通用代码实现

l   App中的应用:基于UITextView的验证器

3.       
观察者模式

l   定义及UML图、通用代码实现

l   例子:RSS

l   在iOS中的内部支持1:KVO

l   在iOS中的内部支持2:NSNotificationCenter

4.       
中介者模式

l   定义及UML图、通用代码实现

l   编写一个例子:房产中介

l   在iOS中的应用:UIViewController中控件间通信

5.       
状态模式

l   定义及UML图、通用代码实现

l   写一个例子:空调遥控器

l   在App中的应用:用户登录

第2讲
总结回顾

1.       
回顾23个设计模式

2.       
设计模式沉思

v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

Normal
0
false

10 pt
0
2

false
false
false

EN-US
ZH-CN
X-NONE

$([{£¥·‘“〈《「『【〔〖〝﹙﹛﹝$(.[{£¥
!%),.:;>?]}¢¨°·ˇˉ―‖’”…‰′″›℃∶、。〃〉》」』】〕〗〞︶︺︾﹀﹄﹚﹜﹞!"%'),.:;?]`|}~¢

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:Calibri;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}



@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

包建强的培训课程(8):iOS与设计模式的更多相关文章

  1. 包建强的培训课程(7):iOS企业级开发实战

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  2. 包建强的培训课程(13):iOS与ReactNative

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  3. 包建强的培训课程(11):iOS Runtime实战

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  4. 包建强的培训课程(12):iOS深入学习(内存管理、Block和GCD等)

    @import url(/css/cuteeditor.css); @import url(http://i.cnblogs.com/Load.ashx?type=style&file=Syn ...

  5. 包建强的培训课程(3):App竞品技术分析

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  6. 包建强的培训课程(4):App测试深入学习和研究

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  7. 包建强的培训课程(1):Android App企业级开发

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  8. 包建强的培训课程(2):Android与设计模式

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  9. 包建强的培训课程(16):Android新技术入门和提高

    @import url(/css/cuteeditor.css); Normal 0 10 pt 0 2 false false false EN-US ZH-CN X-NONE $([{£¥·‘“〈 ...

随机推荐

  1. springboot添加自定义注解

    spring拦截器是基于动态代理,注解就是拦截器,所以关于动态代理需要注意的坑,注解同样要注意. 1.创建注解类 /** * @Target 此注解的作用目标,括号里METHOD的意思说明此注解只能加 ...

  2. 7.Redis主线程阻塞原因

    7.Redis主线程阻塞原因7.1 发现阻塞7.2 内在原因7.2.1 API或数据结构使用不合理7.2.2 CPU饱和7.2.3 持久化阻塞7.3 外在原因7.3.1 CPU竞争7.3.2 内存交换 ...

  3. JavaScript 引用错误

    在学习vue时 出现无法实现效果原始设置 <script src="js/lib/vue2.min.js"/><script src="js/lib/v ...

  4. position在IE下的问题

    盒子设置position:absolute;后,子盒子的浮动可以不做清除浮动处理,同样,使用fixed,子盒子也不需要做清除浮动的处理 在IE7下(据说IE6也不行),盒子设置overflow:hid ...

  5. 利用正则表达式实现python强口令检测

    """ Chapter 7 模式匹配和正则表达式 1 用import re 导入正则表达式模块 2 用re.compile()函数创建一个Regex对象(记得使用原始字符 ...

  6. lr录制脚本中文乱码问题

    以下设置一种就可以解决乱码问题 方法一.脚本录制好后->在TOOL->RECORDING OPTIONS ->ADVANCED ->SUPPORT CHARSET 勾选UTF- ...

  7. github node.js

    #安装githubyum install git -y #下载nvmgit clone git://github.com/creationix/nvm.git ~/nvm #设置nvm 自动运行;ec ...

  8. centos6.6安装Elasticsearch

    1. 安装jar8 yum list java-1.8* sudo yum install java-1.8.0-openjdk* -y java --version 2. 安装elasticsear ...

  9. 前端学习日记之HTML、CSS 简单总结

    前端学习日记之HTML.CSS 简单总结 标签(空格分隔): html css 前端学习日记 html超文本标记语言 一. h标题标签 h1-h7 <!DOCTYPE html> < ...

  10. 解决build workspace 缓慢的问题

    (1).解决方法         方法1.修改eclipse启动文件 eclipse.ini 中添加启动参数参数: -vmargs -Xmx512m         方法2.关闭自动构建工作区: pr ...