笔记-大话设计模式-04 开放-封闭原则
2015-09-08 15:38
330 查看
开放-封闭原则,是说软件实体(类、模块、函数等)应该可以扩展,但是不可修改。对于扩展是开放的,对于更改是封闭的。
无论模块是多么的"封闭",都会存在一些无法对之封闭的变化。既然不可能完全封闭,设计人员必须对于他设计的模块应该对哪种变化封闭做出选择。他必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化。
在我们最初编写代码时,假设变化不会发生。当变化发生时,我们就创建抽象来隔离以后发生的同类变化。
面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。
开放-封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护、可扩展、可复用、灵活性好。开发人员应该仅对程序中呈现出频繁变化的那些部分做出抽象,然而,对于应用程序中的每个部分都刻意地进行抽象同样不是一个好主意。拒绝不成熟的抽象和抽象本身一样重要。
无论模块是多么的"封闭",都会存在一些无法对之封闭的变化。既然不可能完全封闭,设计人员必须对于他设计的模块应该对哪种变化封闭做出选择。他必须先猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化。
在我们最初编写代码时,假设变化不会发生。当变化发生时,我们就创建抽象来隔离以后发生的同类变化。
面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。
开放-封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护、可扩展、可复用、灵活性好。开发人员应该仅对程序中呈现出频繁变化的那些部分做出抽象,然而,对于应用程序中的每个部分都刻意地进行抽象同样不是一个好主意。拒绝不成熟的抽象和抽象本身一样重要。
相关文章推荐
- Java工具类
- FMDB的详细使用方法
- 11729 - Commando War(贪心)
- struts2 action动态方法调用
- LeetCode || Maximal Rectangle
- 今天这个是mybatis与spring的整合
- nginx+tomcat负载均衡
- 每天一个linux命令---curl
- 笔记-大话设计模式-03 单一职责原则
- Android --ListView使用ArrayAdapter
- IOS使用Auto Layout中的VFL适配
- Linux 命令行快捷键
- tomcat-5.5.26不能访问主页可以访问项目的一种情况
- Windows 环境下Apache HTTP Server 2.2的安装和使用apache转发weblogic集群
- LeetCode OJ 之 H-Index II(H指数 - 二)
- Android性能优化典范
- java中的中文乱码处理
- nyoj 483 Nightmare 【bfs】
- 软件开发文档
- 回顾-uboot