二. 开闭原则(OCP)
开闭原则的核心思想就是:一个对象对扩展开放,对修改关闭。它的英文缩写是OCP,英文全称是Open for Extension,Closed for Modification。
开闭原则的意思就是:对类的改动是通过增加代码进行的,而不是改动现有的代码。也就是说,软件开发人员一旦写出了可以运行的代码,就不应该去改变它,而是要保证它能一直运行下去,如何才能做到这一点呢?这就需要借助于抽象和多态,即把可能变化的内容抽象出来,从而使抽象的部分是相对稳定的,而具体的实现层则是可以改变和扩展的。
例如: 有一个需要解析bmp文件和png文件, 并提取图像数据的功能.
图像文件解析类使用bmp解析类和png解析类这两个类对图像进行解析, 假设现在要增加解析jpg文件的功能, 我们的设计应该是增加一个jpg解析类即可. 而不应该去修改bmp解析类或者png解析类来满足新的功能.
其实也很容易理解: 通常我们在开发的时候, 遇到新的功能增加, 我们也是尽量避免修改原来的代码, 而是增加代码.
因为原来的代码已经测试过和运行过是没有问题的, 如果新增的功能时改变了这些代码, 可能会改出问题而且你需要重新测试.
这个原则在函数设计, 类设计等等都适用.
开闭原则的核心思想就是:一个对象对扩展开放,对修改关闭。它的英文缩写是OCP,英文全称是Open for Extension,Closed for Modification。
开闭原则的意思就是:对类的改动是通过增加代码进行的,而不是改动现有的代码。也就是说,软件开发人员一旦写出了可以运行的代码,就不应该去改变它,而是要保证它能一直运行下去,如何才能做到这一点呢?这就需要借助于抽象和多态,即把可能变化的内容抽象出来,从而使抽象的部分是相对稳定的,而具体的实现层则是可以改变和扩展的。
例如: 有一个需要解析bmp文件和png文件, 并提取图像数据的功能.
图像文件解析类使用bmp解析类和png解析类这两个类对图像进行解析, 假设现在要增加解析jpg文件的功能, 我们的设计应该是增加一个jpg解析类即可. 而不应该去修改bmp解析类或者png解析类来满足新的功能.
其实也很容易理解: 通常我们在开发的时候, 遇到新的功能增加, 我们也是尽量避免修改原来的代码, 而是增加代码.
因为原来的代码已经测试过和运行过是没有问题的, 如果新增的功能时改变了这些代码, 可能会改出问题而且你需要重新测试.
这个原则在函数设计, 类设计等等都适用.