1. 开闭原则的概念
今天充分理解了什么是开闭原则。
原话是“Sofstware entities should be open for extension ,but closed for modification”
一个软件实体应当是对扩展开放,对修改关闭。
阎宏的理解是:在设计一个模块的时候,应当是这个模块可以在不被修改的前提下被扩展;应当可以
在不必修改源代码的情况下改变这个模块的行为。
2. 开闭原则的思想
(1)抽象与具体在程序设计思想中的体现
我觉得就是体现了一种稳定中又包含变化的思想。系统的核心结构是相对稳定的,在设计它的时候,
就要提取可变化的部分,形成对变化的抽象,最后万变不离其中。可扩展的范围不是任意的,而是在
你的稳定的那部分(对变化的抽象)所允许的范围内。当超过了这个范围那么稳定的也要发生改变。
(2)开闭原则在Java中的体现
如何控制变化?也就是阎宏所说的“抽象化是关键”。
最为精彩的那部分是由于从抽象层导出一个或多个新的具体类可以改变系统的行为,因此系统的设计
对扩展是开放的。对于这种抽象的方法,在JAVA 中有Java接口和抽象类。
(3)对可变性的封装原则
这个概念非常精彩,开闭原则中的“闭”,就是要把这些变化封闭起来。我们在做设计时要改变思维
方式:“考虑你的设计中什么可能会发生变化。与通常将焦点放到什么会导致涉及改变的思考方式正
好相反,这一思路考虑的不是什么会导致设计的改变,而是考虑你允许什么发生变化而不让这一变化
导致重新设计”。
这就要求可变性汇集和可变性独立
在需求分析过程中,尽力的区抓住用户相对稳定的需求,分析变化的需求.