面向对象的设计原则(2):OCP

原创 2004年07月07日 22:05:00
太出名了,不再多谈。主要有两点
 (1) Open for extension
 (2) Closed for modification
 Robert.C.Martin举了一个Shape的例子来说明问题。关键的思想是,如果我们预测到了变化,就可以设计一个抽象来隔离它。但是无论模块是如何得"封闭",都会存在一些无法对之封闭得变化。这需要设计人员对于他设计得模块应该对那种变化封闭作出选择,他必须猜测出最有可能发生变化的种类。然后构造抽象来隔离。这种预测能力需要经验的积累!! 并且通常情况下都会猜测错误,怎么办,Martin给我们指出了一条道路:
 (1)只受一次愚弄
 我们愿意被第一颗子弹击中,然后我们会确保自己不再被同一支枪发射的任何子弹击中
 (2) 刺激变化:
 第一颗子弹来的越早、越快对我们越有利:首先编写测试,使用很短的迭代周期,尽早、经常的把软件展示给客户

 OCP是面向对象设计的核心所在,遵循这个原则可以带来巨大的好处,但是肆意的抽象同样不是一个好注意,拒绝不成熟的抽象和抽象本身一样重要!!!

面向对象设计五大原则

一 Single Responsibility Principle——单一职责原则 核心思想: 一个类应该只有一个引起它变化的原因. 假设存在这样的设计. Rectangle类具有两个方法,一个方...
  • xiechao198609150053
  • xiechao198609150053
  • 2016-06-06 11:20:44
  • 785

面向对象的五大设计原则

一:开——闭原则(OCP) 含义:一个软件实体应当对扩展开放,对修改关闭。 二:单一职责原则(SRP) 含义:就是对一个类而言,应该仅有一个引起变化的原因。 所以在构造对象时,应该将对象的不同职责分离...
  • li2327234939
  • li2327234939
  • 2016-12-28 17:15:51
  • 847

面向对象程序设计的六大原则(1)-单一职责原则

SOLID原则1
  • totuswhf
  • totuswhf
  • 2014-04-08 16:52:32
  • 1279

面向对象设计的五个基本原则

面向对象的3个基本要素:封装、继承、多态 面向对象的5个基本设计原则: 单一职责原则(Single-Resposibility Principle)     其核心思想为:一个类,最...
  • rankun1
  • rankun1
  • 2016-03-03 16:32:25
  • 3215

java--面向对象七大设计原则

面向对象七大设计原则 1、 开闭原则 2、 里氏替换原则 3、 单一职责原则 4、 接口隔离原则 5、 依赖倒置原则 6、 迪米特原则 7、组合/聚合复用原则...
  • u013372519
  • u013372519
  • 2014-07-30 23:40:44
  • 1116

设计模式六大原则之--开闭原则(OCP)

1.开闭原则:Open Closed Principle, OCP) 定义:Software entities like classes, modules and functions s...
  • benbenxiongyuan
  • benbenxiongyuan
  • 2014-04-18 15:21:03
  • 2173

面向对象思想设计原则及常见设计模式

面向对象思想设计原则 •在实际的开发中,我们要想更深入的了解面向对象思想,就必须熟悉前人总结过的面向对象的思想的设计原则 •单一职责原则 •开闭原则 •里氏替换原则 •依赖注入原则 •接口...
  • modelsetget
  • modelsetget
  • 2016-11-09 22:58:21
  • 484

OCP与其他设计原则的关系

OCP:(开闭原则)可以在不必修改源代码的情况下改变这个模式的行为          用面向对象的语言来讲,不允许更改的是系统的抽象层,而允许扩展的是系统的实现层          抽象化是关键   ...
  • Demon_huirong
  • Demon_huirong
  • 2016-10-17 10:48:14
  • 190

JAVA之面向对象设计原则

JAVA之面向对象设计原则
  • netuser1937
  • netuser1937
  • 2017-01-23 13:42:58
  • 258

unity开发程序设计原则(七大面向对象设计原则)

七大面向对象设计原则开闭原则:面对需求,对程序的改动是通过增加新代码进行的,而不是改变原来的标题 依赖倒转原则:高层模块不应该依赖底层模块,两个都应该依赖与抽象;抽象不应该依赖于细节,细节应该依赖于抽...
  • qq_34244317
  • qq_34244317
  • 2017-09-02 15:57:30
  • 258
收藏助手
不良信息举报
您举报文章:面向对象的设计原则(2):OCP
举报原因:
原因补充:

(最多只允许输入30个字)