开闭原则:模块、类、函数应该对扩展开放,对修改关闭。
这个原则是面向对象设计的核心。 遵守这一原则可以让我们在面对不断迭代的需求时保持系统的稳定,从而使系统可以不断升级。 简单来说,就是当我们开发完成一个复杂的模块,并且费时费力的测试完成时,如果想要改变它,对稳定功能的修改意味着额外的风险,也意味着需要花费更多的时间用来测试,保证不对现有的业务产生影响。
开闭原则告诉我们,类写好了就不要改了,有需求,就增加新的类来解决。但是这只是理想条件下,现实开发中,我们往往在最初编写并没有遇到需求变化的情况,等到需求变化时相关类已经完成了,只能回头修改。当然了,我们大多数开发者都只是普普通通的人,没办法预知未来发生的变化,我们能做的就是在发生小变化时,及早的想办法解决。换句话说,就是当变化发生时,我们就创建抽象来隔离以后发生的同类变化。
比如刚开始我们设计功能只会考虑某一个类,当功能需要增加一个减法操作,这时候我们就需要察觉变化,并且多变化进行抽象,如下图。