Home › Forums › 《冒号课堂》讨论区 › open closed principle › Reply To: open closed principle
2010年01月10日 at 4:55 am
#1166
Keymaster
首先,Meyer提出的OCP是指模块分解的原则,并不限于类级别的模块。
其次,当时他提出的OCP其实已经涵盖了实现继承和接口继承。
下面稍微具体地说一下。
所谓open是指模块可以扩展(extension),这个容易理解。
所谓closed是指能为其他模块所用,这包括两方面:一是设计层或规范层——模块有定义良好的(well-defined)、稳定的规范描述,并作为正式的标准被认可和接受;二是实现层——模块可以作为编译单位,并被客户使用(比如作为library)。
当然,Meyer在他的著作《Object Oriented Software Construction》中提到的继承的确主要是实现继承,那时似乎还没有明确的接口继承概念。
最后,重申《冒号课堂》中强调的观点:提倡接口继承,避免实现继承。