开闭原则
一,什么是开闭原则
开闭原则是我们在面向对象编程时候需要时刻注意的一点,即一个软件实体应该对扩展开放,而对修改关闭。用面向对象的语言来讲,不允许更改的是系统的抽象层,而允许扩展的是系统的实现层.
二,为什么要用开闭原则
在程序的生命周期内,因为变化,升级和维护等原因需要对程序原有的代码进行修改时,可能会给代码引入错误,增加项目开发测试的复杂度,也可能会使我们不得不对整个功能进行重构,而且还要对原有的代码进行测试。
三,如何实现开闭原则
在面向对象的语言中,我们可以设计一个可以永远不必更改的抽象层,所有的具体实现层都依赖于这个这个抽象层,我们在具体实现的时候,如果需要增加什么新的功能,只需要在具体实现的时候添加而不用修改原有的抽象层。
开闭原则就好比一个综述,比较抽象,难以理解,但是我们要是实现了其他五个原则,那么开闭原则也就随之实现了:
1,单一职责原则:应该有且仅有一个原因引起类的变更(一个接口或一个类只有一个原则,它就只负责一件事)
2,里式替换原则:子类型必须能替换掉它们的基类型
3,依赖倒置原则:高层模块不应该依赖低层模块,两者都应该依赖其抽象,抽象不能依赖细节,细节依赖抽象。
4,接口隔离原则:客户端不应该依赖它不需要的接口,类间的依赖关系应该建立在最小的接口上
5,迪米特法则:只与直接朋友进行通信
把开闭原则应用于实际项目中,我们需要注意至关重要的一点:抽象约束
抽象是对一组事物的通用描述,没有具体的实现,也就表示它可以有非常多的可能性,可以跟随需求的变化而变化。因此,通过接口或抽象类可以约束一组可能变化的行为,并且能够实现对扩展开放,其包含三层含义:
1,通过接口或抽象类约束扩展,对扩展进行边界限定,不允许出现在接口或抽象类中不存在的public方法
2,参数类型、引用对象尽量使用接口或者抽象类,而不是实现类
3,抽象层尽量保持稳定,一旦确定即不允许修改