简介
开放-封闭原则:软件实体(类,模块,函数等等)应该可以扩展但是不可修改。对于扩展是开放的,对于更改是封闭的。
面对需求变化时,我们是增加代码,而不是改变原有的代码,当需求变化发生时,我们就创建抽象来隔离以后将要发生同类的变化
目的
1. 在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。
实现
1.面对变化,通过创建抽象来隔离以后发生的同类变化。
优点
开放-封闭原则是面向对象设计的核心所在,遵循这个原则可以带来面向对象技术所声称的巨大好处。可维护,可扩展,可复用,灵活性好。
缺点
开发人员应该仅对程序中出现频繁变化的部分进行抽象,拒绝不成熟的抽象。
总结
开闭原则无非就是想表达这样一层意思:用抽象构建框架,用实现扩展细节。因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保持软件架构的稳定。而软件中易变的细节,我们用从抽象派生的实现类来进行扩展,当软件需要发生变化时,我们只需要根据需求重新派生一个实现类来扩展就可以了。当然前提是我们的抽象要合理,要对需求的变更有前瞻性和预见性才行。