C#面向对象设计模式纵横谈
1. 面向对象设计模式与原则
李建忠
www.lijianzhong.com
上海祝成科技 高级讲师
设计模式简介
每一个模式描述了一个在我们周围不断重复
发生的问题,以及该问题的解决方案的核心。
——Christopher Alexander
设计模式描述了软件设计过程中某一类常见
问题的一般性的解决方案。
面向对象设计模式描述了面向对象设计过程中、特
定场景下、类与相互通信的对象之间常见的组织关
系。
人是一个经验性的动物
GoF 23 种设计模式
• 历史性著作《设计模式:可复用面向对象软件的基础》一书中描述了
23种经典面向对象设计模式,创立了模式在软件设计中的地位。该书
四位作者被人们并称为Gang of Four (GoF),“四人组”,该书描述
的23种经典设计模式又被人们称为GoF 23 种设计模式。
• 由于《设计模式:可复用面向对象软件的基础》一书确定了设计模式
的地位,人们通常所说的设计模式隐含地表示“面向对象设计模式”。
但这并不意味“设计模式”就等于“面向对象设计模式”,也不意味着GoF
23种模式就表示了所有的“面向对象设计模式”。除了“面向对象设计模
式”外,还有其他设计模式。除了GoF 23种设计模式外,还有更多的
面向对象设计模式。
• GoF 23 种设计模式是学习面向对象设计模式的起点,而非终点;本
培训课程的目标是让学员在建立在有效方法的基础上,掌握GoF 23
种设计模式。
设计模式与面向对象
• 面向对象设计模式解决的是“类与相互通信的对象之间的组织关系,
包括它们的角色、职责、协作方式几个方面。
• 面向对象设计模式是“好的面向对象设计”,所谓“好的面向对象设计”是
那些可以满足 “应对变化,提高复用”的设计 。
• 面向对象设计模式描述的是软件设计,因此它是独立于编程语言的,
但是面向对象设计模式的最终实现仍然要使用面向对象编程语言来表
达,本课程基于C#语言,但实际上它适用于支持.NET框架的所
有.NET语言,如Visual Basic.NET、C++/CLI等。
• 面向对象设计模式不像算法技巧,可以照搬照用,它是建立在对“面
向对象”纯熟、深入的理解的基础上的经验性认识。掌握面向对象设
计模式的前提是首先掌握“面向对象”!
从编程语言直观了解面向对象
• 各种面向对象编程语言相互有别,但都能看到它们对面向对象三大机
制的支持,即: “封装、继承、多态”
– 封装,隐藏内部实现
– 继承,复用现有代码
– 多态,改写对象行为
• 使用面向对象编程语言(如C#),可以推动程序员以面向对象的思维
来思考软件设计结构,从而强化面向对象的编程范式。
•C#是一门支持面向对象编程的优秀语言,包括:各种级别的封装支
持;单实现继承+多接口实现;抽象方法与虚方法重写。