定义:软件实体(类、模块、函数等)应该可以扩展,但是不可修改。
就是说 对扩展开放、对更改封闭。
背景:我们在设计系统的时候,很难一开始就把所有需求考虑到,随着系统的运行,会出现新的需求或者需求的变更,那么在面临需求变化的时候,我们不希望把整个程序推倒重来,那么在系统设计之初,怎样设计才能在面对需求变化的时候保持相对稳定呢?
这就是要用到开放-封闭原则。
设计的时候,时刻要考虑,尽量让这个类足够好,写了就尽量不要去修改,如果有了新的需求,我们就采用增加一些类的方式,原来的代码尽量不要去动。
开放封闭原则是面向对象设计的核心所在,遵循这个原则可以带来面向对象技术的巨大好处:可维护、可扩展、可复用、灵活性好。
开发人员应该仅对程序中呈现出频繁变化大的那些部分作出抽象。