开闭原则(Open-closed principle,缩写为:OCP)
说明:软件实体(模块、类、方法等) 应该“对扩展开放、对修改关闭”(software entities (modules,classes,functions,etc.)should be open for extension ,but closed for modification).
通俗理解就是添加一个功能应该是再已有的代码基础上进行扩展,而不是修改意有代码。
开闭原则的目的是为了代码的可扩展,并且避免了对现有的代码的修改给软件带来的风险。可扩展的前提是需要了解到未来的扩展点,拿实际软件开发中如何找到所有的可扩展点呢? 以下提供了几种参考方案
1.如果是业务驱动的系统,需要在充分了解了业务的需求前提下,才能找到对应的扩展点,如果不确定因素过多,需求变化快,则可以对一些比较确定的,短期内就可以能扩展,通过设计扩展点,能明显提升代码稳定性和开发效率的地方进行设计。
2.如果是通用型的技术开发,比如开发通用的框架,组件,类库,你需要考虑该技术框架将如何被用户使用,考虑功能的升级需要预留的扩展点意见版本之间的兼容问题。
3.即使对系统的业务或者技术矿建有足够的了解,也不一定要设计所有的扩展点。为未来可能发生变化得没和地方都预留扩展点,也会给系统代码极大的复杂度,实现起来也是工作量也不可小觑。需要综合开发成本,影响范围,实际收益(包括时间和人员成本)等因素进行考虑。