zoukankan      html  css  js  c++  java
  • 包建强的培训课程(8):iOS与设计模式

     

    课程名称:iOS与设计模式

    一、     简介

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

     

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

     

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

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

    2、业务功能繁多。

     

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

    11-2iOS开发经验。

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

     

    二、     培训大纲(2天)

    第一天 上午

    1 SOLID五大原则及UML图绘制

    1.        单一性原则

    l   一个类只干一件事情

    l   ViewController中剥离UITableView

    2.        开闭原则

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

    l   switch-case谈起

    3.        里氏替换原则

    l   父类,子类?

    l   对多态的重新认识

    l   白马与马

    4.        依赖倒置原则

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

    l   模版方法

    l   WebServiceJSON

    5.        接口隔离原则

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

    l   看人下菜碟

    l   宽窄接口

    6.        迪米特法则

    l   不要和陌生人说话

    7.        UML图绘制

    l   接口、类

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

    8.        总结

    l   组合,还是继承?

    l   可插拔技术

    l   面向接口编程

     

    2 创建型设计模式(一)

    1.        简单工厂

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

    l   iOS中的使用场景:ViewControllerviewDidLoad方法

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

    2.        工厂模式

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

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

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

    l   反射与工厂模式的配合

     

    第一天 下午

    1创建型设计模式(二)

    1.        单例模式

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

    l   多例

    l   iOS的内部支持:UIApplicationUIAccelerometer

    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中的应用:NSInvocationNSUndoManager

    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中的内部支持1KVO

    l   iOS中的内部支持2NSNotificationCenter

    4.        中介者模式

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

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

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

    5.        状态模式

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

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

    l   App中的应用:用户登录

     

    2讲 总结回顾

    1.        回顾23个设计模式

    2.        设计模式沉思

     

  • 相关阅读:
    接口自动化测试中解决所遇问题的博客链接
    python中logging日志模块详解
    yaml.load()时总是出现警告:YAMLLoadWarning: calling yaml.load() without Loader=...
    基于ArcGIS Desktop 10.2开发的环境安装
    【部署】IIS导入证书后绑定报错“证书中的一个或多个中间证书丢失”
    IIS7.x 生成CSR证书请求文件
    Sql Server多种分页性能的比较
    网页上出现D盾拦截,删除、取消
    Fusioncharts图表常用参数设置
    Windows Server 2016 安装.NET Framework 3.5 错误
  • 原文地址:https://www.cnblogs.com/Jax/p/5928419.html
Copyright © 2011-2022 走看看