系统维护性和扩展性之我见

     做软件开发的人员,听的很多的一句话就是系统一定要维护性好,扩展性好。虽然是一句话,但是内部包含的内容和意义非同小可。怎样才能提高系统或者模块的维护性和扩展性呢?下面来做详细的介绍。

1.何为系统的维护性?

2.何为系统的扩展性?

 

       维护性即系统的修改能力,提高系统的维护性即提高系统的修改能力。遇到新的需求,系统能很好的修改。但是我们开发系统人员会发现,我们做的系统并不是很好的修改,往往修改一个地方会导致很多地方出现不同层次的问题。维护工作艰难且巨大。比如我举个例子:

       一个开发人员开发了A这个类,后面有50个类在使用它,后面由于一个原因需要修改这个类,需要把这个类分成两个类来操作。你这就会修改51个类,如果更多呢??修改很大的,维护很困难

 

image

 

这种情况下,如果我们最开始有一个代理类,其它50个类来使用A类的时候,通过代理来调用(相当于设计模式中的门面模式)。那么A类修改了,我们只需要改代理类,其它50个类不会做任何修改。

image

 

当然这只是提高维护性的一个方式。提供系统的维护性还需要不停的总结,提高。多分层,多设计。

    

        扩展性即系统的开放性,遇到新的需求,能很好的扩展而不是全部去修改。不动以前的内容,只对系统进行增加功能。这个看似不可能的事情,其实是完全可以实现的。大家肯定听说过一个词语,叫对修改关闭对扩展开放。的确这样系统的维护量很小,并且增加功能又不去管之前系统的代码,这样我们系统就会在很快的时间完成新的版本进行交互。但是怎样才能做到这一点呢????

     我们面向对象有3大概念:封装、继承、多态。封装继承大家应该耳熟能详,但是多态可能感觉有点陌生。在这里我们就会来介绍下怎么通过多态的方式来实现系统的扩展。

    多态的代码表示:

    Father f=new Son1();

    Father f1=new Son2();

    你在使用的时候你会发现,f,f1这两个对象,具有相同的方法和属性(这是废话)。但是我们从上面能获得什么呢。如果我是在运行时指定是哪个儿子不就实现了扩展了吗?,比如儿子3又出现了,但是我在运行时指定后面实例化Son3,那不就是代表Son3的操作了莫。当然这里所有的孩子都要继承父类(这一点大家应该都很清楚吧)。

   好,下面我来做个简单的例子。

有如下需求:要求亚洲程序猿开发一个后台代码,实现数据的保存。保存形式很多种,现在就先开发保存到文件中,使用json保存。前台和后台商量好了,我们建立一套枚举值,这套枚举值就代表我们保存的方式,这个前台是需要指定的。

enum SaveDataDefine{SaveByFile}

经过分析,我们发现,保存是一个经常变化的点,如果这里不做到很容易扩展的话,后面系统修改就很大,维护量也会不小。话不多说,直接代码(好的代码即设计):

public interface ISaveData

{

SaveDataDefine Define{get};

void Save(string data);

}

public class SaveTofile:ISaveData

{

public SaveDataDefine Define{return SaveDataDefine.SaveByFile};

void Save(string data){

//实现文件保存 具体代码略

}

}

public void InvokeProxy

{

//传入枚举值,执行调用 此处用反射 进行枚举的比较 找到具体实现的对象 此处略。这个类供前台调用

}

好,现在客户发神经似的需要说,我们要把数据保存到数据库。由于此处的设计很有扩展性,所以修改是分分钟的事情,我们走起:

在枚举类中添加一个枚举值 SaveByDataBase

添加一个类:

public class SaveToDataBase:ISaveData

{

public SaveDataDefine Define{return SaveDataDefine.SaveByDataBase};

 

void Save(string data){

//实现文件保存 具体代码略

}

}

所有的东西都不需要修改了,是不是很具有扩展性。当然我们在开发系统的时候会遇到各种各样的问题,我这里也只是冰山一角。我们需要不停的总结和学习才能使我们的系统更具有优势,后期的维护和扩展更简单。

亚洲程序猿 2013/12/13 qq:657224709

转载于:https://my.oschina.net/u/253207/blog/184149

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值