我们日常用的手机软件隔上一段时间就会有新的版本更新,在java web 系统开发中我们应该支持可扩展原则——这就是我今天要说的开放-封闭原则,先来说明下在开发中何为开放何为封闭。
开发-封闭原则其实是有两个特征:
1、对于扩展是开放的(Openfor extension)
2、对于更改是封闭的(Closedfor modification)
这两原则的用途
我们做任何系统都不要指望系统一开始时需求确定,就再也不发生变化,这是不现实也不科学的,既然系统一定会发生需求的变化,一定会出现修改,那么我们在设计软件时就要考虑“怎样设计才能面对需求的改变却可以保持相对稳定,从而使得系统可以在第一个版本以后不断推出新的版本”。
一句话总结就是:软件需求总是变化的,世界上没有一个软件的是不变的,因此对软件设计人员来说,必须在不需要对原有系统进行修改的情况下,实现灵活的系统扩展。
举例-判断优劣
下面是一般面向对象的方法编写的简单计算其中关于运算符类的相关代码,每次增加新的运算符时必须更改整个类。
public
class
Operation
{
public
static
double
GetResult (
double
numberA,
double
numberB,string operate)
{
double
result = 0d;
switch
(operate)
{
case
"+"
:
result = numberA + numberB;
break
;
case
"-"
:
result = numberA - numberB;
break
;
case
"*"
:
result = numberA * numberB;
break
;
case
"/"
:
result = numberA / numberB;
break
;
}
return
result;
}
}
当我们每次需要增加某一个运算符我们都需要去改变整个类,如果是一个复杂的项目我们无法想象会遇到多么大的问题。而如果我们运用抽象工厂方法的话,就解决了这个问题(可用如下类图所示方法)

开放-封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护、可扩展、可复用、灵活性好。