您现在的位置是:主页>文章>C# 设计模式(5)-- 开放-封闭原则 网站首页

C# 设计模式(5)-- 开放-封闭原则

一,引言

这个系列是本人对设计模式的一些看法,希望能让对设计模式有兴趣的朋友,以此入门,写的不当之处欢迎指出。转载的朋友请留下原文链接。下面为大家介绍一种设计原则——开放-封闭原则。  

二,定义

开放-封闭原则(OCP,Open Closed Principle),是说一个软件实体(类,模块,函数等等)应该可以扩展,但是不可修改。 既是对于扩展是开放的(Open for extension),另一个是说对于更改是封闭的(Closed for modification)。

在实际的开发过程中,都不要指望系统一开始时需求确定就永远不会改变,这是不现实也是不科学的想法,而既然需求是一定会发生变化的,那么如何在面对需求变化的时候,设计的软件可以相对容易修改,不至于说,新需求一来,就要大幅度改动,甚至整个程序推倒重来。而怎样的设计才能面对需求的改变却可以保持相对稳定,从而使得系统可以在第一个版本以后不断推出新的版本?开放-封闭给我们答案。

面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有代码,这就要求设计人员在设计初期猜测出最有可能发生的变化种类,然后构造抽象来隔离那些变化。实际上是很难预先猜测的,所以在发生变化时立即行动,查明可能发生的变化所等待的时间越长,要创建正确的抽象就越困难。发生变化时,我们就创建抽象来隔离以后发生的同类变化。

开放-封闭是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护,可扩展,可复用,灵活性好。对频繁变化的那些部分做出抽象,然而,当然刻意的抽象同样不是一个好主意。拒绝不成熟的抽象和抽象本身同样重要。------来自大话设计模式

三,总结

软件设计本身所追求的目标就是封装变化,降低耦合。开放-封闭原则就是对这一目标最直接的体现。

Top