面向对象与设计模式 RD
常见编程范式介绍 并行编程 - Process-orientedProcess-oriented 组件编程 - Component-basedComponent-based 事件驱动 - Service-oriented,Time-drivenService-orientedTime-driven 表达式编程 – 表达式驱动 Lisp 结构化编程 1. 面向对象 2. 模块化编程 3. 递归
结构化,共享数据,简单 什么是面向过程? #include int main(int argc, char *argv[]) { printf("Hello, world\n"); return 0; }
什么是面向对象 class { public static void main(String[] args) { System.out.println("Hello World!"); } public void ICanBark() { System.out.println(“Hey,I can bark!"); } 程序语言,完成了现实世界和虚拟环境的映射,语言的作用在于抽象, 表达 / 描述,进而解决问题。
面向对象和面向过程,本质是一样的,光既是波,也是粒。面向对象最基础的 部分,仍旧是面向过程的实现。 面向对象特点 Class 实例 方法 消息传递 抽象 封装 继承 多态 松耦合
不要被程序员的语言技能迷惑,要看透他们本质 面向对象与程序员 ◦ 披着 JAVA 外衣的 C 程序员 ◦ SSH 程序员 , Framework kids ◦ 披着 C++ 外衣的 C 程序员 ◦ 纯 C 程序员 ◦ 纯 C++/JAVA 程序员
世界上没有任何一种语言,像 C++ 一样对程序员脑力的剥削, 持续的时间这么长,剥削的深度这么深 面向对象的衍生问题 ◦ 面向对象,试图用一种具体化的抽象,来描述现实世界 的实体,实体之间的关系。这种方式,给语言和程序员, 带来了沉重的负担。 ◦ 对象生命周期管理成为 big trouble ◦ 组件之间的交互,成为大问题 ◦IOC 解决了上述问题 ◦ 框架和引擎,依托于面向对象而生 ◦ 设计模式
面向对象与设计模式 ◦JAVA 语言对软件界的贡献 设计模式 Gang of Four
Real Gang of Four
SBD saids : 设计模式只涉及方法论,与语言人品无关 什么人需要了解设计模式 ◦ 需要在 Framework 下面写代码,或者写一个框架 ◦ 想成为真正的 OO 程序员 ◦ 想自我剥削,更深刻的理解这个世界,用更抽象复杂的 方式描述这个世界 ◦ 脱离菜鸟的队伍 ◦ 想成为软件构架师 ◦ 想看懂国外的开源代码 ◦ 以上都不想,只想写好 WEB 程序,或者 GUI 程序
Singleton 设计模式 ◦ 面向对象,有 instance, object ◦ 大量的对象产生,要把容器撑爆,很难管理 ◦ 面试时候,一些学院派的考官,经常问这个问题 ◦ 本质上,我们需要对象生命周期管理 ◦ 其实,你只需要 1 个对象
Yep, Safe and simple 一个 Singleton 的例子 public class IAmSingle { private static iInstance=new IAmSingle(); private IAmSingle {} public IAmSingle getInstance() { return iInstance; }
Web 程序员, GUI 程序员的最爱 MVC
严格意义来讲, MVC 不是一个设计模式,而是多种设计模式的混合体 MVC 说,我不是设计模式
View 通过策略模式,把用户动作代理给 controller 执行
View,controller 都订阅了 Model 的状态变化,这样又是一个 Observer 模式
设计模式就像葵花宝典,但仍旧不是武术的最高境界,我们要把 它变成易筋经。 可以 Fellow, 不能盲从 … Thanks , 讨论一下