面向对象的开闭原则PPT课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2) ChartDisplay类针对抽象图表类进行编程,由客户端来决定使 用哪种具体图表。
重构后结构如图2所示:
.
11
• 在我们最初编写代码的时候,我们假设变化不会发生,但最后变化发生的时
候,可以通过创建抽象来隔离以后将要发生的同类变化。
开闭原则是面向对象设计中“可复用设计”的基础,是面向对象设计中最重
.
4
现在的问题是,需求变了,要求还要实现一个 减法的功能,这也很简单,如图示
.
5
如果需求再变,还要求能实现乘法和除法的功能,依然简 单,如图示
.
6
• 从第2和第3步来看,很明显,在需求改变,需要引进新的功能的时候, 做法是在已有的类的基础上通过新添方法来实现功能,假设在第2步之后, 第3步的时候发现加法和减法功能 最终都没有用到,反而乘法和除法需要用到,那么在第3步的时候就要 推翻第2步之前的实现,在需求发生改变需要引进新的功能的时候,就要 推翻整个之前的系统,很明显这样的做法是不可取的,说明设计上出现
在开闭原则的定义中,软件实体可以指一个软件模块、一 个由多个类组成的局部结构或一个独立的类。
.
2
任何软件都需要面临一个很重要的问题,即它们的需求会 随时间的推移而发生变化。当软件系统需要面对新的需求时, 我们应该尽量保证系统的设计框架是稳定的。
而抽象化是开闭原则的关键
.
3
来看一个简单的实例
假设现在需要实现一个加法的功能,很简单,如图示
了问题,这个缺陷明显的是违反了OCP(开闭原则)。
需求总是在变的,如果可能,就要做到尽量不要去修改已有的实现,而 应该通过扩展的手段来稳定需求的变动。
.
7
OCP原则替换图
.
8
再看一个实例
Sunny软件公司开发的CRM系统可以显示各种类型的图表,如 饼状图和柱状图等,为了支持多种图表显示方式,原始设计方案如 图1所示:
.
9
• 在该代码中,如果需要增加一个新的图表类,如折线图 LineChart,则需要修改ChartDisplay类的display()方法 的源代码,增加新的判断逻辑,违反了开闭原则。

现对该系统进行重构,使之符合开闭原则。
.
10
(1) 增加一个抽象图表类AbstractChart,将各种具体图表类作为其 子类;
面向对象设计原则之
开闭原则
By柳阳 2013141463245
.
1
开闭原则是面向对象的可复用设计的第一块基石,它是 最重要的面 向对象设计原则。开闭原则由Bertrand Meyer于 1988年提出,其定义如下:
开闭原则(Open-Closed Principle, OCP): 一个软件实体应当对扩展开放,对修改关闭。 即软件实体应尽量在不修改原有代码的情况 下进行扩展。
要的原则之一。 从开闭原则中可以看出,面对对象的重要原则是创建抽象化, 并且从抽象化中导出
具体化,具体化可以有许多不同的版本,而每个不同的版本可以给出不同的 实现。
.12Βιβλιοθήκη
相关文档
最新文档