一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第27天,点击查看活动详情。
开闭原则是 SOLID 中比较难以理解的原则。开闭原则,简单来说,就是对修改关闭,对扩展开放。
在23种设计模式中,绝大多数原则都是围绕着扩展性来的。
那么如何理解,对修改关闭,对扩展开放?比较简单的方式,就是新增一个功能,是否是在已有的基础上去扩展它,而不是修改已有的代码。为什么这样是好的,因为首先修改会产生耦合,另外的话就是修改会影响原有功能的单元测试。
所以我们后续如果符合了开闭原则,那么只需要新增扩展内容即可。这样不会破坏原有的结构。另外我们可能做不到完全不修改代码,但是我们可以尽量做到修改的内容更为上层,保持底层代码的稳定。
那么如何做到对你扩展开放,对修改关闭呢?
我们需要做到写的代码具有较好的扩展性。为了写出扩展性好的代码,需要时刻具备扩展、抽奖、封装的意识。我们写代码的时候需要多想想这个地方以后哪些地方可能会变,如何写才能保证在后续扩展的时候,新的代码只需要灵活地插入到扩展点上就可以,不需要修改原来的代码。我们需要将不变的地方封装起来,将变化的东西隔离出来。
代码开发中,最常用来提高代码的扩展性的的方法有以下五种:多态、依赖注入、基于接口而非实现编程、大部分的设计模式。
那么如何在项目中灵活运用开闭原则?
这个就需要识别扩展点了。需要对业务的未来发展有深刻的认识。我们可以对不远将来要发生的需求做扩展,但是不能盲目扩展,可能会适得其反。