SlideShare ist ein Scribd-Unternehmen logo
1 von 88
面向对象开发 课程开发 :penghao 2008-04-01
课程目的 ,[object Object],[object Object]
课程大纲 ,[object Object],[object Object],[object Object],[object Object]
我们面对的是什么?
这种情况下的应对之道 ,[object Object],[object Object]
程序,服务具有良好结构有两个层面的考虑 ,[object Object]
细粒度结构设计 - 本文档关注的核心
什么代码写得好?什么叫坏的代码?有标准吗? 2-5
 
坏代码举例 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
 
好代码的近似标准介绍 ,[object Object],[object Object],[object Object]
OO( 或者说语言 ) 的核心思想—表达领域概念 ,[object Object],[object Object],[object Object]
 
如何来表达一个 mmog- 静态视图?
针对某个领域对象粗分操作,行为,职责。
[object Object],[object Object]
 
实际 mmogAI 表达的例子
表达概念的几种类型 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object]
释意接口的例子 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
推荐写法如下: ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object]
实体表达的例子 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object]
约束表达的例子 ,[object Object],[object Object]
实际产品对进房需求的演化 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
 
 
[object Object],[object Object]
流程 ( 服务 ) 表达的例子
基本行为流程概念的表达,对于产品同事不断提及到的流程概念表达。
行为概念流程表达的好处
把规格用对象来表达 ,[object Object],[object Object],[object Object]
隐含概念表达实例 ,[object Object],[object Object],[object Object]
 
OO 的五项技术原则是什么?(讨论,提问)
 
OO 的五项技术原则 ,[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object]
五项技术原则实例 - 单一职责 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object]
五项技术原则实例 - 开闭原则 ,[object Object]
五项技术原则实例 - 依赖倒置 ,[object Object],[object Object]
 
经典的解决办法(参考 QQGame 大厅设计以及 《敏捷软件开发》)
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],五项技术原则实例 - 接口隔离
五项技术原则实例 - 可替换 ,[object Object],[object Object]
从 OO 看合理的分层结构
[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
从开发每个过程看 OO 方法论的应用 ,[object Object],[object Object],[object Object],[object Object],[object Object]
需求分析 -OOA ,[object Object],[object Object],[object Object]
OOA 实例 ,[object Object],[object Object],[object Object],[object Object]
 
实例一:把各个实体概念及其之间关系表达出来
实例二:进行抽象,使概念表达更具灵活性,和可扩展性。
设计 -OOD ,[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
设计模式实例—模板方法 ,[object Object],[object Object]
MFC 的解决实例
模板方法类图结构
设计模式实例—观察者 ,[object Object]
观察者标准类图
观察者实际代码例子 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],这个实例中,命令是属于基础设施层的东西,但是要通知上层业务逻辑,自己的状态变迁。所以使用观察者。
设计模式实例—抽象工厂 ,[object Object],[object Object],[object Object]
简单的工厂
抽象工厂
[object Object],[object Object],[object Object],抽象工厂特征
设计模式实例—桥 ,[object Object],[object Object],[object Object],[object Object],[object Object]
 
ACE Reactor- 实现视图
设计模式实例 - 职责链 ,[object Object],[object Object],[object Object],[object Object]
 
 
职责链好处如下 ,[object Object],[object Object]
设计模式实例 - 组合模式 ,[object Object],[object Object]
 
设计模式实例— Reactor ,[object Object],[object Object],[object Object],[object Object]
注意 Reactor 对概念的抽象,和应用的分层隔离。这些经典的手段。
设计模式实例—异步命令模式 ,[object Object],[object Object],[object Object],[object Object]
异步命令模式框图
时序图 ,[object Object],[object Object],[object Object]
谢谢 Q&A

Weitere ähnliche Inhalte

Ähnlich wie 腾讯大讲堂05 面向对象应对之道

资身Dba经验谈
资身Dba经验谈资身Dba经验谈
资身Dba经验谈yiditushe
 
01 orm概述及持久化介绍
01 orm概述及持久化介绍01 orm概述及持久化介绍
01 orm概述及持久化介绍Zelin Wang
 
信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressAppzhoujg
 
金字塔原理培训演示教材
金字塔原理培训演示教材金字塔原理培训演示教材
金字塔原理培训演示教材明镜 王
 
金字塔原理培训演示教材
金字塔原理培训演示教材金字塔原理培训演示教材
金字塔原理培训演示教材明镜 王
 
7 issues --- Foundation for goals --- part1 2014-09-01-002
7 issues --- Foundation for goals --- part1 2014-09-01-0027 issues --- Foundation for goals --- part1 2014-09-01-002
7 issues --- Foundation for goals --- part1 2014-09-01-002Tein Horng Yuan
 
Refactoring with Patterns in PHP
Refactoring with Patterns in PHPRefactoring with Patterns in PHP
Refactoring with Patterns in PHPJace Ju
 
設計模式的解析與活用:分析
設計模式的解析與活用:分析設計模式的解析與活用:分析
設計模式的解析與活用:分析Kane Shih
 
软件设计原则、模式与应用
软件设计原则、模式与应用软件设计原则、模式与应用
软件设计原则、模式与应用yiditushe
 
PLS偏最小平方法教材一天-三星統計謝章升-20131122
PLS偏最小平方法教材一天-三星統計謝章升-20131122PLS偏最小平方法教材一天-三星統計謝章升-20131122
PLS偏最小平方法教材一天-三星統計謝章升-20131122Beckett Hsieh
 
业务需求分析入门
业务需求分析入门业务需求分析入门
业务需求分析入门zhoujg
 
Design Pattern - Factory Pattern
Design Pattern - Factory PatternDesign Pattern - Factory Pattern
Design Pattern - Factory PatternLi-Wei Yao
 
2012/05/23 AU Talk - 讓事情發生
2012/05/23 AU Talk - 讓事情發生2012/05/23 AU Talk - 讓事情發生
2012/05/23 AU Talk - 讓事情發生appuniverz
 
魏琪君-重构-关于可读性、原则和模式
魏琪君-重构-关于可读性、原则和模式魏琪君-重构-关于可读性、原则和模式
魏琪君-重构-关于可读性、原则和模式fangdeng
 
魏琪君-重构-关于可读性、原则和模式
魏琪君-重构-关于可读性、原则和模式魏琪君-重构-关于可读性、原则和模式
魏琪君-重构-关于可读性、原则和模式fangdeng
 
P6 User 概述与配置
P6 User 概述与配置P6 User 概述与配置
P6 User 概述与配置epst
 
簡報規劃與技巧
簡報規劃與技巧簡報規劃與技巧
簡報規劃與技巧基欽 劉
 
对“新软攀峰”官网项目中面向对象设计原则和包设计原则的分析与修改
对“新软攀峰”官网项目中面向对象设计原则和包设计原则的分析与修改对“新软攀峰”官网项目中面向对象设计原则和包设计原则的分析与修改
对“新软攀峰”官网项目中面向对象设计原则和包设计原则的分析与修改zhaoyulee
 
Part04
Part04Part04
Part04wyl
 
掌星 移动互联网开发笔记-Vol002
掌星 移动互联网开发笔记-Vol002掌星 移动互联网开发笔记-Vol002
掌星 移动互联网开发笔记-Vol002rainx1982
 

Ähnlich wie 腾讯大讲堂05 面向对象应对之道 (20)

资身Dba经验谈
资身Dba经验谈资身Dba经验谈
资身Dba经验谈
 
01 orm概述及持久化介绍
01 orm概述及持久化介绍01 orm概述及持久化介绍
01 orm概述及持久化介绍
 
信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp
 
金字塔原理培训演示教材
金字塔原理培训演示教材金字塔原理培训演示教材
金字塔原理培训演示教材
 
金字塔原理培训演示教材
金字塔原理培训演示教材金字塔原理培训演示教材
金字塔原理培训演示教材
 
7 issues --- Foundation for goals --- part1 2014-09-01-002
7 issues --- Foundation for goals --- part1 2014-09-01-0027 issues --- Foundation for goals --- part1 2014-09-01-002
7 issues --- Foundation for goals --- part1 2014-09-01-002
 
Refactoring with Patterns in PHP
Refactoring with Patterns in PHPRefactoring with Patterns in PHP
Refactoring with Patterns in PHP
 
設計模式的解析與活用:分析
設計模式的解析與活用:分析設計模式的解析與活用:分析
設計模式的解析與活用:分析
 
软件设计原则、模式与应用
软件设计原则、模式与应用软件设计原则、模式与应用
软件设计原则、模式与应用
 
PLS偏最小平方法教材一天-三星統計謝章升-20131122
PLS偏最小平方法教材一天-三星統計謝章升-20131122PLS偏最小平方法教材一天-三星統計謝章升-20131122
PLS偏最小平方法教材一天-三星統計謝章升-20131122
 
业务需求分析入门
业务需求分析入门业务需求分析入门
业务需求分析入门
 
Design Pattern - Factory Pattern
Design Pattern - Factory PatternDesign Pattern - Factory Pattern
Design Pattern - Factory Pattern
 
2012/05/23 AU Talk - 讓事情發生
2012/05/23 AU Talk - 讓事情發生2012/05/23 AU Talk - 讓事情發生
2012/05/23 AU Talk - 讓事情發生
 
魏琪君-重构-关于可读性、原则和模式
魏琪君-重构-关于可读性、原则和模式魏琪君-重构-关于可读性、原则和模式
魏琪君-重构-关于可读性、原则和模式
 
魏琪君-重构-关于可读性、原则和模式
魏琪君-重构-关于可读性、原则和模式魏琪君-重构-关于可读性、原则和模式
魏琪君-重构-关于可读性、原则和模式
 
P6 User 概述与配置
P6 User 概述与配置P6 User 概述与配置
P6 User 概述与配置
 
簡報規劃與技巧
簡報規劃與技巧簡報規劃與技巧
簡報規劃與技巧
 
对“新软攀峰”官网项目中面向对象设计原则和包设计原则的分析与修改
对“新软攀峰”官网项目中面向对象设计原则和包设计原则的分析与修改对“新软攀峰”官网项目中面向对象设计原则和包设计原则的分析与修改
对“新软攀峰”官网项目中面向对象设计原则和包设计原则的分析与修改
 
Part04
Part04Part04
Part04
 
掌星 移动互联网开发笔记-Vol002
掌星 移动互联网开发笔记-Vol002掌星 移动互联网开发笔记-Vol002
掌星 移动互联网开发笔记-Vol002
 

Mehr von areyouok

22浅谈游戏音频开发及制作
22浅谈游戏音频开发及制作22浅谈游戏音频开发及制作
22浅谈游戏音频开发及制作areyouok
 
腾讯大讲堂37 内容运营的基础知识
腾讯大讲堂37 内容运营的基础知识腾讯大讲堂37 内容运营的基础知识
腾讯大讲堂37 内容运营的基础知识areyouok
 
腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍areyouok
 
腾讯大讲堂06 qq邮箱性能优化
腾讯大讲堂06 qq邮箱性能优化腾讯大讲堂06 qq邮箱性能优化
腾讯大讲堂06 qq邮箱性能优化areyouok
 
腾讯大讲堂52 《激战》少数派报告
腾讯大讲堂52 《激战》少数派报告腾讯大讲堂52 《激战》少数派报告
腾讯大讲堂52 《激战》少数派报告areyouok
 
腾讯大讲堂51 游戏产品运营事故案例介绍
腾讯大讲堂51 游戏产品运营事故案例介绍腾讯大讲堂51 游戏产品运营事故案例介绍
腾讯大讲堂51 游戏产品运营事故案例介绍areyouok
 
腾讯大讲堂48 数据库查询优化浅析
腾讯大讲堂48 数据库查询优化浅析腾讯大讲堂48 数据库查询优化浅析
腾讯大讲堂48 数据库查询优化浅析areyouok
 
腾讯大讲堂46 自由cgi之路v3
腾讯大讲堂46 自由cgi之路v3腾讯大讲堂46 自由cgi之路v3
腾讯大讲堂46 自由cgi之路v3areyouok
 
腾讯大讲堂50 疯狂美剧,快乐英语
腾讯大讲堂50 疯狂美剧,快乐英语腾讯大讲堂50 疯狂美剧,快乐英语
腾讯大讲堂50 疯狂美剧,快乐英语areyouok
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttcareyouok
 
腾讯大讲堂43 专利运营
腾讯大讲堂43 专利运营腾讯大讲堂43 专利运营
腾讯大讲堂43 专利运营areyouok
 
腾讯大讲堂38 oracle基础体系结构及性能优化
腾讯大讲堂38 oracle基础体系结构及性能优化腾讯大讲堂38 oracle基础体系结构及性能优化
腾讯大讲堂38 oracle基础体系结构及性能优化areyouok
 
腾讯大讲堂49期 产品翻译面面谈
腾讯大讲堂49期 产品翻译面面谈腾讯大讲堂49期 产品翻译面面谈
腾讯大讲堂49期 产品翻译面面谈areyouok
 
腾讯大讲堂42 数据库内核设计思路浅析
腾讯大讲堂42 数据库内核设计思路浅析腾讯大讲堂42 数据库内核设计思路浅析
腾讯大讲堂42 数据库内核设计思路浅析areyouok
 
腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松areyouok
 
腾讯大讲堂29 营销平台让你我共赢
腾讯大讲堂29 营销平台让你我共赢腾讯大讲堂29 营销平台让你我共赢
腾讯大讲堂29 营销平台让你我共赢areyouok
 
腾讯大讲堂26 带宽优化之道
腾讯大讲堂26 带宽优化之道腾讯大讲堂26 带宽优化之道
腾讯大讲堂26 带宽优化之道areyouok
 
腾讯大讲堂24 qq show2.0重构历程
腾讯大讲堂24 qq show2.0重构历程腾讯大讲堂24 qq show2.0重构历程
腾讯大讲堂24 qq show2.0重构历程areyouok
 
腾讯大讲堂41 国际化-走向海外市场的必经之路
腾讯大讲堂41 国际化-走向海外市场的必经之路腾讯大讲堂41 国际化-走向海外市场的必经之路
腾讯大讲堂41 国际化-走向海外市场的必经之路areyouok
 
腾讯大讲堂54 webgame 市场分析及设计探讨
腾讯大讲堂54 webgame 市场分析及设计探讨腾讯大讲堂54 webgame 市场分析及设计探讨
腾讯大讲堂54 webgame 市场分析及设计探讨areyouok
 

Mehr von areyouok (20)

22浅谈游戏音频开发及制作
22浅谈游戏音频开发及制作22浅谈游戏音频开发及制作
22浅谈游戏音频开发及制作
 
腾讯大讲堂37 内容运营的基础知识
腾讯大讲堂37 内容运营的基础知识腾讯大讲堂37 内容运营的基础知识
腾讯大讲堂37 内容运营的基础知识
 
腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍
 
腾讯大讲堂06 qq邮箱性能优化
腾讯大讲堂06 qq邮箱性能优化腾讯大讲堂06 qq邮箱性能优化
腾讯大讲堂06 qq邮箱性能优化
 
腾讯大讲堂52 《激战》少数派报告
腾讯大讲堂52 《激战》少数派报告腾讯大讲堂52 《激战》少数派报告
腾讯大讲堂52 《激战》少数派报告
 
腾讯大讲堂51 游戏产品运营事故案例介绍
腾讯大讲堂51 游戏产品运营事故案例介绍腾讯大讲堂51 游戏产品运营事故案例介绍
腾讯大讲堂51 游戏产品运营事故案例介绍
 
腾讯大讲堂48 数据库查询优化浅析
腾讯大讲堂48 数据库查询优化浅析腾讯大讲堂48 数据库查询优化浅析
腾讯大讲堂48 数据库查询优化浅析
 
腾讯大讲堂46 自由cgi之路v3
腾讯大讲堂46 自由cgi之路v3腾讯大讲堂46 自由cgi之路v3
腾讯大讲堂46 自由cgi之路v3
 
腾讯大讲堂50 疯狂美剧,快乐英语
腾讯大讲堂50 疯狂美剧,快乐英语腾讯大讲堂50 疯狂美剧,快乐英语
腾讯大讲堂50 疯狂美剧,快乐英语
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc
 
腾讯大讲堂43 专利运营
腾讯大讲堂43 专利运营腾讯大讲堂43 专利运营
腾讯大讲堂43 专利运营
 
腾讯大讲堂38 oracle基础体系结构及性能优化
腾讯大讲堂38 oracle基础体系结构及性能优化腾讯大讲堂38 oracle基础体系结构及性能优化
腾讯大讲堂38 oracle基础体系结构及性能优化
 
腾讯大讲堂49期 产品翻译面面谈
腾讯大讲堂49期 产品翻译面面谈腾讯大讲堂49期 产品翻译面面谈
腾讯大讲堂49期 产品翻译面面谈
 
腾讯大讲堂42 数据库内核设计思路浅析
腾讯大讲堂42 数据库内核设计思路浅析腾讯大讲堂42 数据库内核设计思路浅析
腾讯大讲堂42 数据库内核设计思路浅析
 
腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松
 
腾讯大讲堂29 营销平台让你我共赢
腾讯大讲堂29 营销平台让你我共赢腾讯大讲堂29 营销平台让你我共赢
腾讯大讲堂29 营销平台让你我共赢
 
腾讯大讲堂26 带宽优化之道
腾讯大讲堂26 带宽优化之道腾讯大讲堂26 带宽优化之道
腾讯大讲堂26 带宽优化之道
 
腾讯大讲堂24 qq show2.0重构历程
腾讯大讲堂24 qq show2.0重构历程腾讯大讲堂24 qq show2.0重构历程
腾讯大讲堂24 qq show2.0重构历程
 
腾讯大讲堂41 国际化-走向海外市场的必经之路
腾讯大讲堂41 国际化-走向海外市场的必经之路腾讯大讲堂41 国际化-走向海外市场的必经之路
腾讯大讲堂41 国际化-走向海外市场的必经之路
 
腾讯大讲堂54 webgame 市场分析及设计探讨
腾讯大讲堂54 webgame 市场分析及设计探讨腾讯大讲堂54 webgame 市场分析及设计探讨
腾讯大讲堂54 webgame 市场分析及设计探讨
 

Hinweis der Redaktion

  1. 想表达面向对象的主要观念,方法和原则。 设计模式是方法层面上的东西。 在这些方法之后是面向对象的观念在支撑。 为什么这样做是好的?什么是好的标准? 想结合许多代码的例子来表明面向对象怎么来看这 2 个问题。 理解了面向对象的观念,对于方法层面的理解应该会更好一点。同时对于全局写代码时可以建立自己的原则。
  2. 介绍面向对象的一般手法 , 原则和几个设计模式来。 需要 2 个小时。
  3. 这个希望能够能强化。很多毕业生不能够理解一个软件要写三年 很容易把这个搞成一个短期行为。 24 小时不停机的海量用户服务 或者上千万,上亿用户使用的软件 产品 / 策划很难把握 3 个月 /6 个月后的产品规划。 持续不断的需求,一般产品 3 年后还在持续不断开发是常见的情况。
  4. 第一点 比如要考虑详细的统计信息方便搜集情况和定位问题; 要考虑关键数据的安全策略; 要考虑方便的日志机制定位问题;等等。不在本文档讨论范围。
  5. 细粒度结构设计关注软件需求,需求分析,关注程序内部结构设计,代码实现。 对于细粒度的开发活动,面向对象有一个体系来支撑。 OO 是一个方法论。本文档着力描述它的应对方式。