设计模式—开放-封闭原则

来源:互联网 发布:淘宝布局管理怎么做好 编辑:程序博客网 时间:2024/05/16 01:57

1.开放-封闭原则是什么?

       开放-封闭原则是说软件实体(类、模块、函数)应该时可以扩展的,但是不可修改。这个原则其实有两个特性,一个是对于扩展是开放的,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况,另一个是说对于更改是封闭的,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。

       “需求总是变化”、“世界上没有一个软件是不变的”,这些言论是对软件需求最经典的表白。在做任何软件产品的时候,我们都不要指望产品的需求是确定不变的,这种想法往往是不现实也是不科学的,需求不仅仅是一定会变而且是一直在变,对于我们软件开发人员来说在面对需求改变的情况下,要求设计的软件是相对容易修改的,不至于新需求一来或者有需求变化时就要把整个程序推倒重来,那么怎样的设计才能够面对需求的改变可以保持相对的稳定,从而使得系统可以在第一个版本以后不断推出新的版本呢?答案就是我们需要遵循开放-封闭原则去设计软件。

2.代码中具体实现

       在具体编写代码的过程中要求要有抽象的概念,实现开放-封闭原则的核心思想就是对抽象编程,而不是对具体编程,因为抽象相对稳定。那么抽象的概念具体是指的什么?指由实体抽离出概念的思考过程。就是从众多的对象中抽离出共同的本质的特征。在写代码的过程中,需要抽象类的地方,只需要抓住这个类的本质功能,不要老想着它在这个工程中的具体功能。在编写一个类的过程中,需要让这个类依赖于固定的抽象,所以对修改就是封闭的,而在通过面向对象的继承和多态机制,可以实现对抽象体的继承,通过覆写其方法来改变固有行为,实现新的扩展方法,所以对于扩展就是开放的,这也是实施开放-封闭原则的基本思路。

       总之开放-封闭原则最关键的是抽象,但是也并不是说一旦抽象接口、类确定就一定不能修改。只是,我们在抽象的时候就要全面思考,争取做到不用修改,一旦需求有变化,只需在实现的时候有变动。当然,需求是千变万化的,一旦需要改动抽象的部分,那么只要前面严格遵循了该原则,影响也会小得多。当然了如果修改了,一定要进行单元测试,凡是用到的地方都要测试正确。

3.总结

       开放-封闭原则是面向对象设计的核心所在,遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护、可扩展、可复用、灵活性好。在设计程序的过程中只需要对程序中出现频繁变化的那部分做出抽象,然而,对于程序中每个部分都刻意地进行抽象同样不是一个好主意,拒绝不成熟的抽象和抽象本身一样重要。


0 0
原创粉丝点击