.NET 提升教育 CYQ.Data 精通课程 By 路过秋天 2016-12-20.

Slides:



Advertisements
Similar presentations
夯实教师教育 办好非师范教育 ---- 以外语专业为例 河北师范大学 李正栓. 1. 坚定不移地实施教师教育 A. 关键词:师范院校 师范院校是以培育师资为目的的教育机构,多属于高等教育 层级。 含 “ 师范大学 ” 或 “ 师范学院 ” 。另外,由师专升为本科的院校 多数更名为 “XX 学院 ”
Advertisements

醫學美學之我見ー肉毒桿菌 班級:應日三乙 姓名:蔡雅卉 學號: 497E0076. 前言 現在的人,已經把 整型看做是微不足 道的事情了。即使 只是戴牙套、局部 雷射、割雙眼皮、 打美白針、肉毒桿 菌等等,都可以在 身體上做不同的改 變,而讓自己更滿 意自己的外表。
中医内科 陈良金. 目的要求: 熟悉虚劳的证候特征。 了解虚劳的发病与气血阴阳及五脏的关系。 掌握虚劳和肺痨及一般虚证的区别与联系。 掌握虚劳的治疗要点。 熟悉虚劳各个证型的辨证论治。 了解虚劳的预后及调摄护理。
第一章 餐饮服务程序 学习目的: 掌握餐饮服务四个基本环节的内容 正确表述和运用各种餐饮形式的服务程序 熟悉并利用所学知识灵活机动地为不同需求的 客人提供服务.
教育研究课题的实施 北京教育科学研究院 陶文中 第一节 如何制定课题研究计划 (开题论证报告) 一般结构(框架) 1 、课题名称 2 、研究目的和意义 3 、研究的基本内容 ( 1 )理论研究(细分为若干子项目) ( 2 )实践研究( 细分为若干子项目)
1 語音下單代表號 請輸入分公司代碼 2 位結束請按#字鍵 統一證券您好 ﹗ 請輸入分公司代碼結束請按#字鍵,如不知分公司代碼請按*號。 請輸入您的帳號後 7 位 結束請按#字鍵 請在聽到干擾音時輸入您的密碼結束請按#字鍵 主選單一覽表 委託下單請按 1 ; 取消下單請按 2 成交回報請按.
人權教育融入教學與 法治教育 彭巧綾 蔡永棠 閱讀理解 六頂思考帽 以概念圖整理閱讀理解 指導學生運用關鍵詞,繪製概 念圖,並分享修正。
教育技术装备统计系统 使用培训 教育部基础教育司 教育部教育管理信息中心.
义务教育课程标准实验教材 四年级下册 语文园地六 词语盘点 习作 口语交际 我的发现 日积月累 展示台.
被 江 泽 民 残 酷 迫 害 致 死 的 法 轮 功 学 员 李竟春,女,1954年3月16日出生,江西省九江市人。于2000年12月18日到北京证实大法,关押在北京市门头沟看守所遭受非人的迫害。在狱中李竟春绝食抗争被管教骗喝一瓶“可疑的豆浆”后一直咳嗽不断,发烧呕吐,吐出白色有强烈异味液体,于2000年1月4日死亡。
第八编 清代文学 清代文学绪论 第一章 清代诗词文 第二章 《长生殿》与《桃花扇》 第三章 《聊斋志异》 第四章 《儒林外史》
事业单位法人年度报告制度改革 业 务 培 训.
視力不良學(幼)童 篩檢與矯治常見問題 長庚醫院 兒童眼科 楊孟玲 醫師.
描写家乡的一处景物.
问卷调查法.
二次函数图象特点的应用 结题报告 K-11 班研究性学习小组 李浚滨制作.
第三章 企业主要经济业务核算 学习目的和要求:通过对工业企业的主要经济业务的了解,要求学生掌握、巩固帐户与借贷记帐法的相关知识及其运用,并进一步了解和熟悉会计核算方法。 本章重点与难点问题是:企业在各阶段的业务核算 内容提要:本章首先介绍企业在各不同阶段(企业创立阶段、企业供应阶段、企业生产阶段、企业销售阶段等)的业务内容;然后介绍了各阶段业务核算所需设置的帐户及其帐户的功能与结构;最后举例说明各阶段业务的核算。
校本培训 常州市新北区新桥实验小学 金文英 团体活动助人成长 校本培训 常州市新北区新桥实验小学 金文英
2014年造价员资格考试 建设工程造价管理基础知识 徐建元.
教師權益─ 退撫制度變革修法 吳忠泰 退撫制度變革修法電子檔可在全教總網站下載分享
讲故事训练 授课人:田轶.
【 准 备 上 课 啦 】 心 境 —— 快 乐 源 泉 学习 — 悦于心 聚于魂 化于行.
第七章 无形资产.
《幼儿园模拟教学》(第一章 第二章) 呼伦贝尔学院 教育科学学院 学前教育教研室.
公文及公文处理 学校办公室 姚利民.
广州事业单位面试专项练习 主讲:蔡厚佳 微博:腰果公考菜菜爱做梦 2016年04月29日-05月05日.
(某同学作文选段) 这就是我 大家好,我的名字叫XX,我家在XX,但是小学的时候我在XX学校读书,我现在读书在永固中学,我现在说学校变化,但是我回校读书坐单车,还有学校很大,初中学习练几课,老师有很多,学校学生有很多,但是现在很重要学习,但是我家有很多工叫做,没有那么多时间学习。
第十一課 菜園 6-11.
青岛市农村实用人才高等学历教育 2013年秋季入学测试考前练兵 语文----写作部分辅导
房地产开发项目经营情况 (X204-1表).
幼儿园现代管理的思考与实践.
童軍志工服務報告 陽光基金會 愛心捐活動 第2組 報告人:秦惠芬 製作人:江妮錡.
校本选修课 第三专题 西藏问题 北京师大二附中 李文燕.
德育导师制基本经验介绍.
第8章 设计数据库应用网站 本章讲述的主要内容 8.1 数据库基础知识 8.2 使用数据库系统 8.3 SQL查询基础
面试与面试技术.
Lua+wax在ios上的应用 白 衣.
石家庄迅步网络科技有限公司 联系人:张会耀 电话:
函 文种常识 结构写法 注意事项 例文赏析与训练.
個人投資理財分析 財務狀況匯總表 銀行存款 共同基金 外幣基金 股票投資 保險價值 黃金投資 支出預算 房貸計算 不動產價值 資源變化資料庫
正修科技大學教學發展中心 教師教學觀摩與經驗分享 電子工程系 張法憲副教授.
设计模式可以帮助我们改善系统的设计,增强 系统的健壮性、可扩展性,为以后铺平道路。
义务教育新课程标准实验教科书 九年级历史下册课堂教学设计
氣候變遷對南台灣降雨造成之影響 研究背景 結果與討論 研究方法 結論 朱振豪1 、彭康豪1 、莊煌甲1 、邱俊彥2,* 研究目的
克薩技術 vs 傳統配種 克薩人.
科學科 污染 空氣 成因 的 : 題目 及 減少空氣污染的方法 陳玉玲 (4) 姓名 : 去到目錄.
蘇軾詞的賞析
柯奕宏(06) 王予亨(13) 郭秉逸(15) 楊雯凈(23) 顏佑瑩(32)
第十五章 传播学调查研究方法.
自然與生活科技領域 認識太陽能 蘇紋琪、石明玉.
 全能的天才畫家- 李奧納多‧達文西 (西元1452年-1519年) 指導老師:袁淑芬老師 製作人:饒佩芯.
Design Patterns Lecture 4.
第20章 LINQ 資料查詢技術 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或拷貝.
周宇 南京航空航天大学 软件设计模式与体系结构 周宇 南京航空航天大学
软件建模训练(6-2) 设计模式 张静 南京理工大学计算机科学与工程学院.
浅谈MySql索引及锁的应用 厦门大学数据库实验室 刘颖杰 2014年3月8日.
資料庫管理(Access 2003) 第五章 利用查詢來 統計與分析資料 許欽嘉 老師.
認識我的故鄉_台中市.
简单工厂模式.
第十讲 学生成绩管理系统(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
第五章 介面/集合/泛型 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或供拷貝.
精忠报国  演唱:屠洪纲 作词:陈涛 作曲:张宏光  狼烟起 江山北望  龙起卷 马长嘶 剑气如霜  心似黄河水茫茫  二十年 纵横间 谁能相抗  恨欲狂 长刀所向  多少手足忠魂埋骨它乡  何惜百死报家国  忍叹惜 更无语 血泪满眶  马蹄南去 人北望  人北望 草青黄 尘飞扬  我愿守土复开疆  堂堂中国要让四方来贺.
高中 E 形象 數位果子科技有限公司 程建嘉.
交通大學圖書館教授兼副館長 新世代圖書館自動化系統發展趨勢 交通大學圖書館教授兼副館長.
樂樂請假了 尊重的故事 資料來源:臺北縣國民小學品德教育手冊 故事來源:臺北縣國民小學品德教育手冊 網路小故事
聽聽那冷雨---重點摘要 二愛 王煜榕.
議題: 複製人.
憲政與民主 應化3A 邱泓明.
4. 曾文水庫越域引水環評報告彙整 資料來源: 1. 曾文水庫越域引水下游輸水工程環境影響差異分析暨環境現況差異分析及對策檢討報告(定稿本)
古蹟知性之旅 我和新港奉天宮有個約 報告人:陳 映 竹 傅 湘 甯.
Presentation transcript:

.NET 提升教育 CYQ.Data 精通课程 By 路过秋天 2016-12-20

课程说明: 学习本系列之前的准备: 已看完框架的Demo或相关文章,有一定的操作能力! 开源地址:https://github.com/cyq1162/cyqdata Demo:http://code.taobao.org/p/cyqopen/src/trunk/CYQ.Data.GettingStarted/

1:讲解CYQ.Data 框架的使用 2:讲解框架的原理及源码 3:扩展知识体系 4:了解设计模式 课程体系: 1:讲解CYQ.Data 框架的使用 2:讲解框架的原理及源码 3:扩展知识体系 4:了解设计模式

核心一:MAction系

扩展知识 1:回顾:ADO.NET? 2:封装的DBHelper、Dapper? 3:进一步被封装的实体ORM? 4:实体ORM的局限性? 5:为什么会有CYQ.Data? 6:CYQ.Data解决了什么问题?

MAction初始化 using(MAction action=new MAction(“m1” , ”c1”)) { } using(MProc proc=new MProc(“p1” , ”c1”)){} 1:两个类的区别是什么? 2:各自的应用场景? 3:为什么用using ? using 原理是? 4:可能产生哪些异常?原因是? 5:这一行代码框架做了什么? 6:第一参数能传些什么?能传null吗?为什么可以这么传? 7:如果执行正常,能获取到什么信息? 8:如何省掉第二个参数?(ProjectTool工具的使用!)

MAction多表操作 using(MAction action=new MAction(“m1”)) { action.ResetTable(“m2”);} using(MProc proc=new MProc(“p1”)) {proc.ResetProc(“p2”);} 1:为什么要切换? 2:切换会抛异常吗? 3:有几个重载方法? 4:能切换不同的数据库的表吗? 5:切换后有什么数据变化了吗?

MAction事务 1:事务只有单机么?支持分布式事务吗? 2:事务什么时候被开启,又什么时候结束? 3:回滚是自动的,还是需要手动的? using(MAction action=new MAction(“m1”)) { action.BeginTrasation(); action.SetTransLevel(...); ...action.ResetTable(...); ...action.RollBack(); action.EndTrasation(); } using(MProc proc=new MProc(“p1”)) { action.BeginTrasation(); action.SetTransLevel(...); action.ResetProc(...); ...action.RollBack(); action.EndTrasation(); } 1:事务只有单机么?支持分布式事务吗? 2:事务什么时候被开启,又什么时候结束? 3:回滚是自动的,还是需要手动的? 4:在MAction操作里,还能操作MProc,但在一个事务吗? 5:切换的表或语句,还在同一个事务吗? 6:如果切换了不同数据库的表呢?事务还在同一个吗? 7:事务的Level是什么?事务的级别各有什么用途?

MAction多平台数据UI交互 using(MAction action=new MAction(“mi” )) {bool result=action.Insert(true);} 1:自动取值入库或更新的原理? 2:如何单条数据交互? 3:如何多条数据交互? 4:对于Json和数据库字段不一致,如何处理? 5:框架的UI交互是如何支持多平台的(web,winform,wpf,第三方)?

MAction多数据库支持 using(MAction action=new MAction(“mi” )) {MDataTable table=action.Select(“Year(CreateTime)>2015”);} 1:框架如何支持多种数据库? 2:如何解析不同数据库下的SQL语句?(DBImport) 3:如何扩展读写分离? 4:如何设置主库备份链接?

核心二:调试与日志

MAction调试 using(MAction action=new MAction(“m1” )) { } bool resultA=action.Insert(); bool resultB=action.Update(1); bool resultC=action.Delete(2); bool resultD=action.Exists(“错误字段=xx”); int count=action.GetCount(“抛异常了”); } 1: 当Insert没有数据,是什么情况? 2:当Update的数据不存在,是什么情况? 3:当删除的条件不存在,是什么情况? 4:当判断Exsits发生异常,是什么情况? 5:当获取记录数发生异常,是什么情况? 6:如何在业务中正常的判断正常,还是无数据,还是异常呢? 7:where条件的推导?

MAction SQL监控 using(MAction action=new MAction(“m1”)) { if(action.Fill(1)) int id=action.Get<int>(0); string name=action.Get<string>(“Name”); action.ResetTable(...); bool resultD=action.Exists(“错误字段=xx”); string where=action.GetWhere(...); } 1: Fill是什么情况,数据在哪? 2:Get<int>(0) 零是什么情况? 3:如果产生异常,它抛还是不抛?怎么控制? 4:如何获取执行的SQL语句呢? 5:如何监控全局的SQL语句呢? 6:如何过滤出执行时间长的SQL语句呢? 7:GetWhere是什么鬼?为什么会有?

日志记录 Log.WriteLogToTxt(...) Log.WriteLogToDB(...) using(SysLogs sys=new SysLogs){...} 1:Log及SysLogs两个类的区别是什么? 2:各自的应用场景? 3:日志写到哪去了? 4:自动创建的日志表? 5:能指定数据库或表名? 6:如果账号没有创建表权限怎么办? 7:现实的源码解读!

扩展知识 1:文件编码有哪些? 2:如何识别文件编码? 3:编码和字节的关系? 4:字节如何正确转换为文字? 5:文件的写并发如何控制? 6:如何监控文件的变化? 7:大文件如何读取(电脑仅4G内存,可日志文件就8个G)?

核心二:缓存

缓存 CacheManage cache = CacheManage.Instance; CacheManage cache = CacheManage.LocalInstance; CacheManage cache = CacheManage.MemCacheInstance; CacheManage cache = CacheManage.RedisInstance; 1:以上代码的区别是什么? 2:各自的应用场景? 3:该如何正确使用? 4:框架自身都缓存了些什么? 5:如何控制框架的自身缓存? 6:如何将表结构缓存外置到文件? 7:如何知道缓存节点是否故障? 8:集群雪崩效应是什么概念? 9:如何配置缓存的故障转移? 10:一致性Hash算法是什么鬼?

扩展知识 类对象属性: 1:静态变量怎么理解? 2:常量怎么理解? 3:静态只读变更怎么理解? 4:静态变量的如何避免内存浪费? Socket多线程编程: 1:Socket 通讯及TCP协议? 2:队列池的概念? 3:多线程是什么? 4:和异步的区别是? 5:并发编程又是什么鬼? 6:多线程快还是单线程快?

核心三:AOP

Aop: 1:Aop 是什么? 2:什么场景可以用Aop? 3:如何使用? 4:Aop使用时,什么情况会产生死循环,如何避免? CYQ.Data.Aop.IAop接口 1:Aop 是什么? 2:什么场景可以用Aop? 3:如何使用? 4:Aop使用时,什么情况会产生死循环,如何避免? 5: Aop使用时,什么情况会产生数据库死锁,如何避免? 6:静态和动态Aop实现的区别?

扩展知识 1:反射是什么概念? 2:如何动态加载程序集? 3:如何动态创建实例? 4:反射如何调静态方法? 5:属性Attribute是什么情况? 6:获取属性Attribute需要二次反射? 7:反射为什么要配合缓存? 8:Emit是什么鬼? 9:为什么他们要用Emit代替反射? 10:为什么他们不全部用Emt代替反射?

核心四:JsonHelper

JsonHelper: 1:JsonHelper提供了哪些静态方法? 2:JsonHelper如何实例化使用? 5:如何和Xml交互? 6:如何和post的数据交互? 7:如何和Get的参数交互? 8:如何和MDataTable系交互? 9:如何和实体交互? 10:如何和字典、泛型、数组交互? 11:如何和其它乱七杂八的数据结构交互?

扩展知识 1:字符和字符串的区别? 2:string和StingBuilder的区别? 3:如何高效的处理字符串的增删改查? 4:字符串如何进行不区分大小写的比较与替换与查找? 5:StringComparison.CurrentCulture 是什么鬼? 6:为什么会有区域敏感排序的存在? 7:如何写出健壮的数据类型转换?

核心五:MDataTable系

扩展知识 1:值类型和引用类型的区别? 2:out和ref认识有多少? 3:如何正确的使用ref? 4: Tuple 是什么?out会被tuple替换吗?

MDataTable系:构成 1:MDataTable的构成元素是什么? 2:MDataRow的构成元素是什么? 3:MDataCell的构成元素是什么? 4:MDataColumn的构成元素是什么? 5:MCellStruct的构成元素是什么? 6:为什么使用起来和DataTable这么像?

MDataTable系:增删改查 1:如何新增加行? 2:如何移除行? 3:如何修改行? 4:如何查询单行? 5:如何查询多行? 6:如何分页查询? 7:如何修改列结构?

MDataTable系:绑定 1:MDataTable 如何绑定表格? 2: MDataTable如何绑定第三方表格? 4: MDataRow 如何批量设置值到界面?

MDataTable系:数据结构交互转换 1:如何和Json交互? 2:如何和Xml交互? 3:如何和实体交互? 4:如何和List<T>交互? 5:如何和字典交互? 6:如何和Get、Post的参数交互? 7:如何和数组交互? 8:如何和DataTable交互? 8:如何和其它乱七杂八的数据结构交互?

MDataTable系:扩展方法 1:如何合并多个表? 2:如何连接多个表? 3:如何对表进行行列转换? 4:如何对表的表进行:求合、求平均、最大、最小值? 5:如何过滤重复行? 6:查询方法的(where),支持到什么程度?

核心六:文本数据库

文本数据库: using(SysLogs sys=new SysLogs){...} 1:什么是文本数据库? 2:文本数据库及内存表的关系? 3:文本数据库的使用场景? 4:如何使用文本数据库? 5:如何指定文本数据库链接? 6:如何CodeFirst交互? 7:数据存档结构? 8:文本数据库的不足?

扩展知识 1:数组、链表、Hash结构的区别? 2:List和Dictionary的使用区别及注意事项? 3:List为什么查询性能这么低?

核心七:DBTool

DBTool: 1:如何对数据库表结构进行增,删,改,查? 2:如何获取表的数据结构? 3:如何获取数据库的所有表及描述? 4:如何测试数据库链接是否正常? 5:如何从数据库链接语句识别数据库类型? 6:如何对字段增加或取消关键字符号?

扩展知识 1:了解数据库的字段类型差异? 2:框架是如何对差异的数据类型进行转换? 3:了解数据库的常见函数的差异用法? 4:框架是如何对常见函数的差异用法进行转换? 5:学习DBImport工具的使用!

核心八:实体ORM系

实体ORM: 1:MAction和MProc已经能处理100%的事情 为什么还存在DBFast、SimpleOrmBase、OrmBase? 1:三个类的区别是什么? 2:各自的应用场景? 3:源码的实现?

核心九:XHtmlAction系

扩展知识 1:xml、html、xhtml的区别? 2:什么是字符实体? 3:如何将特殊字符转换成实体? 4:如何在html中指定编码? 5:SEO是什么? 6:html中哪些知识和SEO有关?

XHtmlAction: 1:如何加载xml? 2:如何加载html? 3:实例参数的IsNoClone是什么情况,怎么理解? 4:如何对单个节点进行操作? 5:如何对批量节点进行操作? 6:如何配合MDataRow进行操作? 7:如何配置MDataTable进行批量操作?

MutilLanguage: 1:如何使用它进行多语言版本开发? 2:语言版本如何切换? 3:可以从哪些地方识别用户的语言环境?

RSS: 1:如何使用RSS类? 2:网站需要支持RSS订阅吗?

核心十:其它系

其它系: 1:如何使用SqlValue类? 2:如何使用DataType类? 3:如何使用MDictionary类? 4:如何使用MList类? 5:如何使用ThreadBreak类?

三个提升效率的工具: 1:CYQ.ProjectTool 生成表结构或枚举。 2:Intelisence 智能语法提示和调试工具。 3:DBImport: 数据库工具:支持多数据库应用的项目必备。

设计模式:

简单工厂 理解核心: 通过static Create方法(参数) { } 内部带swith(参数)分支返回子类实例() 简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 理解核心: 通过static Create方法(参数) { 内部带swith(参数)分支返回子类实例() }

抽象工厂(Abstract Factory): 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 适用性 一个系统要独立于它的产品的创建、组合和表示时。 一个系统要由多个产品系列中的一个来配置时。 当你要强调一系列相关的产品对象的设计以便进行联合使用时。 当你提供一个产品类库,而只想显示它们的接口而不是实现时。 理解核心:简单工厂+反射

工厂模式(Factory Method): 意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。 适用性 当一个类不知道它所必须创建的对象的类的时候。 当一个类希望由它的子类来指定它所创建的对象的时候。 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。 理解核心:调用方式为:共性接口 a=new 子类实例()

建造者模式(Builder Method): 意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 适用性 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 当构造过程必须允许被构造的对象有不同的表示时。 理解核心:工厂模式的注入+固定流程的调用方式

单例模式(Singleton): 意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 适用性 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。 核心理解:实例全局唯一

原型模式(ProtoType): 意图 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 适用性 当要实例化的类是在运行时刻指定时,例如,通过动态装载;或者 为了避免创建一个与产品类层次平行的工厂类层次时;或者 当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。 核心理解:以Clone方法统一返回实例

享元模式( Flyweight) 意图 运用共享技术有效地支持大量细粒度的对象。 适用性 一个应用程序使用了大量的对象。 完全由于使用大量的对象,造成很大的存储开销。 对象的大多数状态都可变为外部状态。 如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象。 应用程序不依赖于对象标识。由于对象可以被共享,对于概念上明显有别的对象,标识测试将返回真值。 核心理解:通过引用Ref来复用某一对象。

门面模式(Facade): 意图 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 适用性 当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。Facade可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过Facade层。 核心理解:定义一个外调用的API类。

中介模式: 意图 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 适用性 一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。 想定制一个分布在多个类中的行为,而又不想生成太多的子类。 核心理解:构造了一个中间平台(以方便A与B的交互)

模版模式: 意图 适用性 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 Te m p l a t e M e t h o d 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 适用性 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。 核心理解:抽取共性算法到父类实现

策略模式: 意图 适用性 核心理解:(工厂+模板模式) 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 适用性 许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。 需要使用一个算法的不同变体。例如,你可能会定义一些反映不同的空间/时间权衡的算法。当这些变体实现为一个算法的类层次时,可以使用策略模式。 核心理解:(工厂+模板模式)

本系列结束: 谢谢参加培训!