专注

导航

面向对象基础-开放封闭原则

开放封闭原则:软件实体(类、模块、函数等等)应该是可以扩展的,但是不可以修改。
我们在做系统的时候,都希望希望一开始时需求确定,以后就不需要修改了,但是这似乎不太科学,出现了变化,我们要如何去做呢?也就是说,怎么设计才能面对需求的变化却可以保持相对的稳定,从而使得系统可以在第一个版本以后不断推出新的版本呢?这就是我要说,在设计的时候需要遵循的开放封闭原则。
封闭:按照我的理解是我们把对象封装成一个类,或者把一些算法封装成一个个函数。这个时候,开发者对于对象来说是封闭的,我们并需要了解具体的类、函数是如何实现,但是无论你的模块、类、函数是多么的封闭,都会存在一些无法对之封闭的变化,既然不可能完全封闭,设计人员必须对于他设计的模块应该对哪些变化冰壁做出选择。他必须先猜测最有肯能的变化种类,然后改造抽象来隔离那些变化。这就是说:我们在最初编写代码的时候,假设变化不会发生,当变化发生地时候,我们就创建抽象来隔离以后发生地同样变化。比如,我做的以前那个算术器,我们首先设计了一个加法类,但是后来发现还有很多运算,我们不能每次都来改动加法类,所以,这个时候,我们需要抽象一个运算类出来,通过面向对象的手段,如继承,多态等来隔离加法、减法、乘法、除法等等。所有的这些需求变化,对程序的改动是通过增加新代码进行的,而不是改变现有的代码,这就是封闭开发原则
开放封闭原则是面对对象设计的核心所在,遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护、可扩展、可复用、灵活性好。开发人员应该仅对程序中出现频繁变化的那些部门作出抽象,然后对于应用程序中的每个部门都刻意地进行抽象同样不是一个好的办法,拒绝不成熟的抽象和抽象本身一样重要。

posted on 2011-11-13 12:45  陈啊M  阅读(158)  评论(0编辑  收藏  举报