@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);
@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;}

 

课程名称:Android与设计模式

一、     简介

本课程根据讲师十多年的一线工作经验,涉足.NET、Android、iOS等多个技术领域,对设计模式有独到的理解。不拘泥于传统的书本教程,结合Android在实际项目中的运用,帮助学员深刻理解设计模式。

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

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

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

2、业务功能繁多。

本课程适用于具有以下特征的学员:

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

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

二、     培训大纲(2天)

第一天 上午

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

1.       
单一性原则

l   一个类只干一件事情

l   从Activity中剥离Adapter

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   可插拔技术

l   面向接口编程

9.       
简单工厂

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

l   Android中的使用场景:Activity的onCreate方法

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

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

1.       
工厂模式

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

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

l   反射与工厂模式的配合

2.       
单例模式

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

l   多例

l   Android中的使用场景:ImageLoader

第一天 下午

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

1.       
单例模式

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

l   多例

l   Android中的使用场景:ImageLoader

2.       
原型模式

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

l   浅拷贝和深拷贝

l   一个例子:孙悟空的分身

l   Android中的使用场景:Intent

3.       
生成器模式

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

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

l   Android中的Builder模式

l   Android中的使用场景:AlertDialog

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

1.       
适配器模式

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

l   类适配器和对象适配器

l   一个例子:变压器

l   Android中的使用场景:Adapter

2.       
桥接模式

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

l   两个维度的简单工厂

l   加法,还是乘法?

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

3.       
代理模式

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

l   在Android中的实现:Binder与AIDL

l   静态代理和动态代理

l   远程代理

l   虚拟代理

l   保护代理

l   智能引用

第二天 上午

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

1.       
组合模式

l   温习一下递归算法

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

l   实现的两种方式

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

l   Android中的使用场景:View和ViewGroup

2.       
享元模式

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

l   不变模式

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

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

l   Android中的使用场景:String

3.       
装饰器模式

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

l   编写一个例子:炒菜

l   给工厂增加新方法

l   Android中的使用场景:ContextWrapper

4.       
外观模式

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

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

l   Android中的使用场景:Context

 

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

1.       
职责链模式

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

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

l   事件分发机制

2.       
模版方法模式

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

l   在Android中的应用1:AsyncTask

l   在Android中的应用2:Activity的生命周期函数

3.       
命令模式

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

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

l   回滚(undo)

l   在Android中的应用:AAPT

4.       
备忘录模式

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

l   回滚机制的另一种实现

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

l   宽窄接口:IMemento

l   在Android中的应用:onSaveInstanceState

第二天 下午

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

1.       
迭代器模式

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

l   外部迭代器和内部迭代器

l   在Android中的内部支持:Cursor

2.       
策略模式

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

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

l   在Android中的应用:Comparator

3.       
观察者模式

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

l   例子:RSS

l   在Android中的应用1:Adapter的notifyDataSetChanged方法

l   在Android中的应用2:BroadcastReceiver

l   在Android中的应用3:事件总线EventBus

4.       
中介者模式

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

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

l   在Android中的应用:Activity中控件间通信

5.       
状态模式

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

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

l   Android中的应用:View的onVisibilityChanged方

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);

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

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

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

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

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

  3. 包建强的培训课程(6):Android App瘦身优化

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

  4. 包建强的培训课程(10):Android插件化从入门到精通

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

  5. 包建强的培训课程(14):Android与ReactNative

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

  6. 包建强的培训课程(9):Android App性能优化

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

  7. 包建强的培训课程(15):Android App热修复技术

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

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

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

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

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

随机推荐

  1. 10.17 elemen.js

    今天终于把element.js的官方文档看完了,主要是基础组件的用法,看的时候有种之前学bootstrap的感觉,似曾相识. 虽然它是基于VUE的,但是展示给我们的代码已经精简到不用会VUE也能看懂了 ...

  2. 大数据下基于Tensorflow框架的深度学习示例教程

    近几年,信息时代的快速发展产生了海量数据,诞生了无数前沿的大数据技术与应用.在当今大数据时代的产业界,商业决策日益基于数据的分析作出.当数据膨胀到一定规模时,基于机器学习对海量复杂数据的分析更能产生较 ...

  3. Python基础测试有关联的接口

    test_guanlian.py放在case文件夹下 test_guanlian.pyimport unittest import requestsfrom urllib.parse import u ...

  4. vue iview render里面写时间截取

    render: (h, params) => {params.row.execDate = (params.row.execDate ? params.row.execDate.substr(0 ...

  5. Swift Realm 完整使用记录

    新项目用到了数据库,本来之前用的都是 SQL,但是语法写的实在是恶心,所以使用 Realm 尝试一下. 1.我使用的 pod 库,所以先 pod 库安装一下,安装完别忘了先编译一下,不然 import ...

  6. Left Join B表,只取B表一条记录

    --用OUTER APPLY select b.* FROM a表 a OUTER APPLY () * from b表 WHERE [Name] = a.[AName] ORDER BY BNo d ...

  7. jira6.3.6创建问题不自动发邮件通知的问题

    装完jira6.3.6后,设置好邮件服务器,测试没有问题.但是创建问题不自动发邮件提示用户.折腾了大半天,请教了一位大神,终于搞定.步骤是: agile->系统->用户界面->用户缺 ...

  8. 选择文件,显示其路径在ListBox控件里

    private void btnSelect_Click(object sender, EventArgs e)        {            lbxFiles.Items.Clear(); ...

  9. Vmware Workstation - linux系统下 VmTools 安装

    程序版本 : VMware® Workstation 14 Pro 系统环境 : win10 64位下 ubuntu-14.04.5-desktop-amd64 问题:在运行linux系统过程中,de ...

  10. cerr与cout区别

    语言:C++ 一.简介 平常常会用的主要有三个:cout.cerr.clog,首先简单介绍下三者. 这三者在C++中都是标准IO库中提供的输出工具(至于有关的重载问题在此不讨论): cout:写到标准 ...