摘要:为了研究设计模式在信息系统中的应用,通过文献查阅法、比较研究法等研究方法,探究设计模式在信息系统中的应用环境以及所起的作用,并对其进行系统性能分析,来评测设计模式使用效果。总结归纳出了各种设计模式在信息系统中所发挥的作用,以及应用的环境。
关键词:设计模式;高效;信息系统
如何设计一个优秀的信息系统?最好的方法莫过于吸收过去成功系统的开发经验。而设计模式正是开发人员将以往的开发经验和实际的开发项目进行结合,抽象出简单方便实用的设计和体系结构,是一套优秀系统开发经验的总结。针对一些具体的问题,例如何设计类图、如何设计继承与被继承的关系、如何设计代码中接口来满足实际等问题,提供模式化解决思路的设计方法,有助于实现系统的维护性和可扩展性。灵活运用设计模式,可以更好地解决系统开发过程中一些通用的问题,以便将来的维护和扩展,同时也可以减少代码的错误率,增加可读性,是信息系统工厂化的一种有利的工具。结合一些常见的设计模式对其在信息系统开发和设计中的应用进行分析。总体来说设计模式分为3大类:创建型模式、结构型模式、行为模式。这其中一共包含23个小类。下面就从中抽取5种,来进行描述。
1单例模式
当设计系统的时候,系统中总有些类是只能实例化一次的,不然就会出现资源浪费的现象,更为严重的是,可能会出现数据事故。以任务窗口类为例,任务窗口的类只需要实例化一个对象就行了,因为一个系统里面只需要一个任务窗口就行,显示该系统中执行的任务,但是如果有多个对象,每个对象里面显示的信息都一样,就会浪费系统资源。而单例模式给了解决此类问题的一种设计理念。要实现单例模式Singleton类,首先将要实现单一构造的函数放进类里,然后将单例类的构造函数私有化,最后再在内部定义静态函数构造,对需要单一实现的类进行实例化,正是这样的设计,保证了类只能实例化一次。如图1所示。单例模式在很大程度上解决了系统的线程安全,资源浪费,因此也在各大系统中被广泛引用。
2工厂模式
一个系统中,必不可少就是类的构建,而最为常见的构建方法就是new()进行构建对象。但是在一个系统开发中,过于频繁用new去创建对象这里面是有很多不足,例如无法隐藏对象、代码复杂、可读性差等,工厂模式就很好地解决了这个问题。(1)当创建对象代码过于复杂的时候,一个封装好的工厂类能够很好地简化程序。(2)隐藏具体类名,很多类隐藏得很深。而且可能会在后续版本换掉,避免辛苦准备构造方法的参数。(3)这样的封装也体现了设计模式的原则,别改代码,只添代码,所有以前的老代码都是有价值的。例如在创建加法类时,应采用工厂模式,建立简单工厂类,加法继承工厂类。若以后添加新的运算类,便可以直接继承,只用添加代码即可,不用修改代码,如图2所示。
3适配器模式
信息系统的设计逻辑有时候是贴近实际生活的。在生活中,常常能遇到这样的问题,例如手机充电头不匹配该怎么办?iPhone和安卓的手机充电头就有很大区别,但如果一定要用iPhone的充电头去冲安卓的手机,那该怎么办,日常经常做的就是加一个转换接口就行了。在系统开发中,也存在同样的问题,就是不匹配的问题,正是因为如此,才设计出了适配器模式来专门解决问题,如图3、图4、图5所示。在该例中,设计Target接口用来实现用户所期待的目标,而这个接口就作为Apapter和adeptee的适配器,正如代码里面所示,可以统一描述出来,这种设计模式主要是针对在程序代码写好之后又遇到了需要使用新对象的情况。而新的对象和原来使用的对象本质上是一种。但是里面的方法和属性都不相同,所以为了减少代码的修改,就像电源适配器一样,是使用不同的对象的一种方法。
4策略模式
使用策略模式,主要是为了解决在一个已有的项目中增加新策略的方法。如果采用策略模式,那么只需要创建一个实现Strategy接口的子类,并重写其中的函数,然后在Context的构造函数中增加这种子类的判断。而客户端的代码、Context中contextInterface()的代码无需作任何修改。这样使得代码的可扩展性十分高。以超市信息系统为例。在过去几年以来,超市一直只有春节促销,国庆促销。而近几年,随着双11这个ip兴起之后,店家决定推出双11促销方案,但是以前的系统已经使用了很长时间,都没什么问题,单纯为了一个促销方案就改动整个系统似乎有点得不偿失,但如果把折扣变成一个抽象类,采用的策略模式来写,就很容易在其后面继承一个双11促销方案。
5观察者模式
用来描述一个类的状态变化会导致另一个类状态随之改变这种情况。这种设计模式在信息系统中用得特别多。以项目报销信息系统为例,来说明观察者模式在信息系统中应用。为了方便只提取几个简单的类。该设计涉及到3个类,项目类、事件类、报销类。报销类包含id_number、state状态(state1代表存在,0代表销毁)。事件类包括id_外文经济期刊numb口腔医学论文er,allowClose(代表存在),al-lowClase(代表销毁)。
作者:张怡天 单位:中南财经政法大学信息与安全工程学院