定义

  一个软件实体(如类、模块、函数)应当对扩展开放,对修改关闭。

定义解读

  在项目开发的时候,都不能指望需求是确定不变化的,大部分情况下,需求是变化的。那么如何应对需求变化的情况?这就是开放-关闭原则要谈的。

  开放-封闭原则的思想就是设计的时候,尽量让设计的类做好后就不再修改,如果有新的需求,通过新加类的方式来满足,而不去修改现有的类(代码)。那么在实际的项目开发中,是否能做到绝对的对修改关闭呢?答案一般也是否定的。既然这样,那么就要求我们在开发前,去找出变化点,然后针对变化点构造抽象,隔离出这些变化。由此可见,实现开闭原则关键是抽象。

优点

  • 具有灵活性,通过拓展一个功能模块即可实现功能的扩充,不需修改内部代码。
  • 具有稳定性,表现在基本功能类不允许被修改,使得被破坏的程度大大下降。

总结

  对于设计模式的六大设计原则,单一职责原则主要说明类的职责要单一;里氏替换原则强调不要破坏继承体系;依赖倒置原则描述要面向接口编程;接口隔离原则讲解设计接口的时候要精简;迪米特法则告诉我们要降低耦合;开闭原则讲述的是对扩展开放,对修改关闭。

  六大设计原则并没有很明显的界限,当我们在遵守某一个设计原则的时候,可能也遵守了其他的设计原则。设计原则是后面要讲述的设计模式的基础,因此在本系列讲述设计模式之前,对设计原则进行了解说。

最新文章

  1. Redis集群研究和实践(基于redis 3.0.5)
  2. SYSTEM表空间AUD$使用空间过大问题处理
  3. SharePoint 2013 Designer系列之数据视图
  4. 判断IP地址是否合法类
  5. Azure Redis Cache (4) 配置和管理Redis Cache
  6. HTML基础—插曲
  7. Mysql InnoDB行锁实现方式
  8. hosts文件导致打不开某些网站
  9. 检查string是否为double
  10. 关于vim打开中文文件出现乱码问题
  11. LoggingApplicationListener
  12. 安装node配置环境变量,解决某组件(如cordova,webpack等)“不是内部命令”问题
  13. Power Sum 竟然用原根来求
  14. zoj2930
  15. tomcat使用自签名证书实现https加密访问
  16. CVTE C/C++开发工程师笔试题(一)
  17. 淘淘商城之Ajax跨域请求
  18. val和var和Java
  19. word怎样从第三页开始设置页码
  20. WinForm中Application.Idle事件用法

热门文章

  1. [UIImage imageWithContentsOfFile:@""] 内存警告
  2. c++连接mysql并提示“无法解析的外部符号 _mysql_server_init@12”解决方法&提示缺少“libmysql.dll”
  3. 2018.6.9 MyEclipse连接Oracle数据库方法及步骤
  4. Oracle grant connect, resource to user语句中的权限
  5. vuex:使用思路总结
  6. vue-cli npm run build 打包问题 webpack@3.6
  7. python实现批量修改文件名
  8. 十七、MySQL UNION 操作符
  9. 短信验证码js
  10. jquery 省市区联动插件