开闭原则是对变化开,对变化闭。乍一听很矛盾……
这是我的系统分析课的老师说的。
不过我想这种“矛盾”完全是老师自己搞出来的,有点故弄玄虚的意味。
不是嘛?让我们来看看英文中对开闭原则的说法:
Classes, methods or functions should be Open for extension and Closed for modification.
类,方法或功能应该对拓展开放,而对修改关闭。
用中文思路应该这样翻译:
在不修改既有设计(代码)的前提下,允许对系统(功能)进行拓展。
这里的开放是允许的意思,关闭是不允许的意思。
而拓展与修改显然是两个不一样的意思,虽然都体现了所谓的“变化”,但老师那样 confusing 的说法,我觉得不合适。