软件设计模式研究

软件设计模式研究

摘要:针对问题场景中如何选择与之相匹配的模式方案,讨论了软件工程中的模式思想,同时分析了特定场合中如何寻找、套用合适的问题解决方案,最后深入阐述几种常用模式方案的原理以及语法结构。

关键词:设计模型;思想复用;门面;适配器;模板方法

1概述

模式方案也称之为设计模式,是编程界的重要基石,其本质上是一套问题的解决方案,体现了思想级别的成果复用,在软件开发生命周期不断缩短,软件产品通过用性、扩展性、复用性要求越来越高的今天,其日益受到人们的重视。

2软件设计模式的类型

设计模式最早是在1990年由ErichGamma等程序员提出,灵感源自从建筑设计领域,进而引入到软件工程开发中来。在传统的编程领域,模式方案众多,多达二三十套,每一种都包含特定的思想与智慧,使复杂的场景简单化。以下对几种常用的设计模式作深入全面的分析。

2.1门面模式(Facade)

门面模式也叫层面模式,是指不同的模块或系统间进行交互时,通过接口的形式进行,而不是直接交互。门面模式使得系统间通信变得标准、统一,极大地降低了系统的耦合,非常有利系统的移植、扩充、维护、复用等。门面模式的提出是为了解决系统对外通过过程中,耦合性过高的问题。考虑这样一个问题,有两个开发小组:WEB前端开发小组、应用系统后台开发小组,每个小组有十个程序员,若两个小组的交互采用组员直接通信,两个组间将会产生100种交互方式,非常不利于对项目经理(PM)对两个开发小组的管理。如果在两个开发小组之间各指定某个人作为组长,两小组之间的通信通过组长来做门面进行交互,那么两个小组间只有一种交互方式,就能极大的降低了PM对项目组管理的难度。门面模式结构如图1所示,在一个商店模块中有Drink(饮料)、Food(食品)、Toy(玩具)等商品,同时有一个Saleman(店员)类作为商店模块的门面,当外部的Customer(顾客)类要购买商店中商品时,则通过店员门面类提供的sale方法,来统一操作相关业务行为,顾客类不能直接操作商店模块中的所有组件(类)。

2.2适配器模式(Adapter)

适配器模式是指形式不兼容的组件通过中间类的整合,使其能为第三方接口服务。适配器模式的提出是为了解决程序设计过程中接口不兼容问题,提升模块的协作效应,同时增强了软件的复用能力。适配器模式如何让不兼容接口间一起协同工作呢?考虑这样的一个场景,来自A国家的商人要寻购买某种商品,来自B国家的商人则要出售该种商品,但两个商人因为语言之间的障碍无法沟通,生意无法达成;这时引入一个第三方翻译作为沟通的中介,在这个翻译的帮助下,最终达成交易,那么这个中介翻译的作用一个语言的适配器角色适配器模式的组成结构如图2所示,有一个手机(Mo-bile)类使用的是电池直流电源供电,现在有一个家用电源(Home_Power)只能提供交流电源,Mobile类与Home_Pow-er类不兼容,不能直接协协同工作,现在通过电源配置器类(Electricity_Adapter)的转换来使他们能够工作起来(交流电转换为直流电)。首先,Electricity_Adapter继承了Mobile类并覆盖unchange_electricity方法,并在此方法中调用Home_Power类的change_electricity方法,因而Elec-tricity_Adapter就成了两者间的转换类,当用户(User)通过Mobile来调用unchange_electricity方法时,通过Electrici-ty_Adapter的转换就能让Home_Power的change_electricity方法为其工作,从面达到协同工作的目的。

2.3模板方法(TemplateMethod)

模板方法也叫算法模板,是指在基类中先定义整体的算法结构,然后在子类中实现具体细节的算法组合过程。模板方法在很多主流的框架中有广泛的应用,此模式提出是为已集成系统或模块增加算法灵活性。模板方法是如何做到不改变算法结构的前提下而又能灵活集成其它的算法呢?其原理如图3所示。在程序员要对数据库进行编程操作时,在流程上都是按照三个步骤来实现:(1)连接上数据库;(2)对数据进行读写操作;(3)关闭数据库。无论是何种关系数据库管理系统,开头都是建立连接,结尾则关闭空闲连接,不同的是中间环节的操作语法,因而针对具体关系数据库时重载相关的算法即可。在如图4所示的一个求职场景中,基类Hr中包含三个抽象方法:投简历(resume)、测试(quize)、面谈(chat),及一个实体方法:求职(applyJob),此方法对面试流程进行了算法定义,如先resume、再quize、最后chat;求职者类LiQin与HeJia继承Hr类,并实现基类的抽象方法,即在子类具体实现各个面试环节的过程,每个求职者主体面试流程是一致的,但具体细节却是不一致,因为面试的岗位、资历等因素不一样的原因。以上算法准备好就可以开始进行一场求职面试(Interview),Interview对象直接通过求职者类(LiQin、HeJia)调用Hr类的applyJob方法即可实现求职过程。

3结束语

设计模式是实践的抽象集成,是一套完整、成熟的思想理论,其最终目标是要达到软件复用。本文从理论方面举例论证了设计模式的思想精华,同时从应用方面论述了其使用场景,如何把理论思想与融合在系统架构中是本文下一步的研究方向。

参考文献:

[1]郭荣.浅谈软件设计模式中的设计原则[J].数码世界,2015(11):5-6.

[2]范伟.软件设计模式研究及应用[J].山东工业技术,2015(20):189-189.

[3]温立辉.JavaEE编程技术[M].北京:北京理工大学出版社,2016:196-216.

[4]刘启明.软件设计模式应用研究[J].电子技术与软件工程,2015(9):68.

[5]王飞.简述软件设计模式及其使用[J].电子世界,2014(17):82.

作者:温立辉 单位:河源职业技术学院