日历

September 2020
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
282930  

Reply To: open closed principle

Home Forums 《冒号课堂》讨论区 open closed principle Reply To: open closed principle

#1166
hui
Keymaster

首先,Meyer提出的OCP是指模块分解的原则,并不限于类级别的模块。

其次,当时他提出的OCP其实已经涵盖了实现继承和接口继承。

下面稍微具体地说一下。

所谓open是指模块可以扩展(extension),这个容易理解。

所谓closed是指能为其他模块所用,这包括两方面:一是设计层或规范层——模块有定义良好的(well-defined)、稳定的规范描述,并作为正式的标准被认可和接受;二是实现层——模块可以作为编译单位,并被客户使用(比如作为library)。

当然,Meyer在他的著作《Object Oriented Software Construction》中提到的继承的确主要是实现继承,那时似乎还没有明确的接口继承概念。

最后,重申《冒号课堂》中强调的观点:提倡接口继承,避免实现继承。

 请您评分1星(很差)2星(不行)3星(一般)4星(不错)5星(很棒)