java-开放—封闭原则

我们日常用的手机软件隔上一段时间就会有新的版本更新,在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;
         }
     }
当我们每次需要增加某一个运算符我们都需要去改变整个类,如果是一个复杂的项目我们无法想象会遇到多么大的问题。而如果我们运用抽象工厂方法的话,就解决了这个问题(可用如下类图所示方法)
http://www.2cto.com/uploadfile/Collfiles/20140214/20140214084255174.jpg

将上面代码中的result返回为各种运算类,然后在生产工厂类加入你所要加的运算类即可,看上去很别扭但是如果你要是在笔试程序中用此原则写代码可能你会比较容易进入下面一轮的面试(闲话),借此例说明一下思想。

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值