包建强的培训课程(2):Android与设计模式
@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):Android App企业级开发
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 包建强的培训课程(16):Android新技术入门和提高
@import url(/css/cuteeditor.css); Normal 0 10 pt 0 2 false false false EN-US ZH-CN X-NONE $([{£¥·‘“〈 ...
- 包建强的培训课程(6):Android App瘦身优化
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- 包建强的培训课程(10):Android插件化从入门到精通
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 包建强的培训课程(14):Android与ReactNative
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 包建强的培训课程(9):Android App性能优化
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- 包建强的培训课程(15):Android App热修复技术
@import url(/css/cuteeditor.css); Normal 0 10 pt 0 2 false false false EN-US ZH-CN X-NONE $([{£¥·‘“〈 ...
- 包建强的培训课程(3):App竞品技术分析
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 包建强的培训课程(4):App测试深入学习和研究
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
随机推荐
- Python学习笔记4基本数据类型续
start 16:36 时间格式化 程序计时:指测量起止动作所经历的时间的过程 实例四文本进度条 #a表示星号被复制的的次数 文本进度条的动态刷新 实现刷新功能的简单代码,但你会发现并没有实现在同一 ...
- [leetcode]66. Plus One加一
Given a non-empty array of digits representing a non-negative integer, plus one to the integer. The ...
- Spring常用注解总结(1)
前言:项目中常用的注解常看常记,总会对自己有些好处,所以在这里分享一下. 使用spring时,可以使用xml配置文件配置相关信息.但是我还是喜欢用注解的方式,因为可以充分利用反射机制获取类结构信息,而 ...
- docker 容器 详解
docker run ## 创建一个新容器 [root@localhost ~]# docker run --help Usage: docker run [OPTIONS] IMAGE [COMM ...
- C#smtp邮件消息提醒的一些bug总结
软件通过检测公众号的某些链接是否异常发邮件提醒.. 1:网上找了些方法有说ssl system.net.mail 不支持 ,这种说法是有问题的,其方法内设置的验证账号写成了邮箱的地址而不是账号也就是 ...
- ServletConfig、ServletContext 的应用
一.ServletConfig对象及其应用(用的不多) 1. Context和ContextPath:一个web工程,若名为JavaWeb,访问的路径为:http://localhost:8080/J ...
- 基于SoftRoCE 了解RDMA
RDMA是基于IB技术的内存直接传送,无需内核参与,硬件网卡搞定.IB需要HPC领域的专用硬件,ROCE则是RDMA协议在普通以太网卡的实现,RoCEv1是在MAC上的二层封装,局域网内可以,要通过路 ...
- java8 学习记录
一. lambda表达式 参考 https://www.cnblogs.com/franson-2016/p/5593080.html package com.mytest.java8; impor ...
- C#读取word内容实践
C#读取word文档是如何实现的呢?我们可以使用FileStream对象来把文本文件里面的信息读取出来,但是对于word文档来说就不能使用这样的方法了. 这种情况下C#读取word文档的实现我们需要使 ...
- Lucene学习笔记:基础
Lucence是Apache的一个全文检索引擎工具包.可以将采集的数据存储到索引库中,然后在根据查询条件从索引库中取出结果.索引库可以存在内存中或者存在硬盘上. 本文主要是参考了这篇博客进行学习的,原 ...