摘 要: 通过对软件设计模式的介绍以及工作实践中几种常用的软件设计模式的研究,给出了软件设计模式的应用场合及最佳实践,实践表明本文所阐述的单例模式与原型模式、策略者方法和模板方法模式以及代理模式在三层Web应用开发中切实有效。
关键词: 设计模式; 单例模式; 策略者模式; 代理模式;
1、 引言
自20世纪90年代软件设计模式概念提出以来,一直受到广大软件开发者的青睐。软件设计模式共分为了3类23种,每种设计模式都有其比较合适的应用场景。但是大多数设计模式并不能得到发扬广大,得不到充分的利用。因此,为了更好地去宣传软件设计模式及让我们开发的软件更加健壮和可靠,本文将结合自己的软件开发实践,试图探索软件设计模式的最佳实践。
2 、软件设计模式介绍
软件设计模式是一种为多数人知道的、能被反复使用的、并分类编目的代码设计经验的概括与总结[1]。使用软件设计模式可以让人更加容易理解代码、保证代码的可靠性以及程序的复用性等。常见的软件设计模式有:创建型模式包括单例模式、原型模式、工厂方法模式、抽象工厂模式和生成器模式;结构型模式包括适配器模式、组合模式、代理模式、桥接模式、装饰模式、外观模式和享元模式;行为型模式包括策略模式、模板方法模式、职责链模式、备忘录模式、命令模式、中介者模式、解释器模式、迭代器模式、状态模式、访问者模式和观察者模式。在所有的软件设计模式中,只有工厂方法模式、适配器模式、解释器模式、模板方法模式既有类模式也有对象模式,而其它的只有对象模式。
3、 软件设计模式应用的最佳实践
软件设计模式并不是短时间内就容易搞懂的知识,也不能说一个人会不是设计模式,因为设计模式没有绝对的对与错,只有理解的深浅不同,实践应用的合适程度不同[2]。本来软件设计模式就是软件开发过程中的最佳实践之一,项目中合理地运用设计模式可以完美地解决很多问题。因此,这里将结合自己的开发经验,探索软件设计模式应用的最佳实践。
3.1、 结合使用单例模式与原型模式
单例模式是在这整个系统开发过程中保证一个类只要一个实例,并提供一个访问它的全局访问点[3]。而原型模式是用原型实例指定创建对象的实例,并且通过复制这个原型来创建新对象,即通过克隆的方式来创建对象。在设计过程中单例模式因只有一个实例,可以节省系统空间,但是因只有一个实例若在多线程并发情况下,可能会发生冲突。而原型模式,因需要时就会复制一个对象出来,会增加系统开销,但在多线程并发时,不会发送冲突。因此,在项目实践中,可以利用这两种设计模式优点,避免其缺点,达到一种较为完美的组合,形成一种最佳实践。如几乎所有的系统都要对用户信息关键信息进行加密保护,为了提高代码的可重用性和可维护性,可以采用单例模式对用户密码等信息提供保密支持。这样可以采用单例模式设计一个对信息进行加密的工具类,为系统提供一个访问它的全局访问点,以提高效率和节省空间。还有在业务逻辑层需要数据访问层某些对象的支持,这样很多地方都使用某个数据访问层的对象,这时对于这样的对象可以采用原型模式,因为原型模式是用原型实例指定创建对象的实例,并且通过复制这个原型来创建新对象,这样可以节省时间,而且效率也高。
3.2、 合理使用策略者模式和模板方法模式
策略者模式定义一系列算法,并将每个算法封装起来,并让它们可以相互替换[4]。也就是说策略模式实际上就是分开算法的定义和使用,分开算法的行为和环境,专门定义一个抽象策略类去声明算法,然后再定义具体的策略类去实现抽象策略类中的算法。这样我们使用具体的算法时是针对抽象策略编程,而不是针对实现编程,符合依赖倒置原则。因此在数据访问层的ORM中,可采用了策略者模式完成查询结果到对象或对象集的操作,这样的模式处理结果集具有通用性、规范性。模板方法模式是在抽象的父类中声明一些算法,而将这些算法的实现延迟到子类中,从而使得子类可以不改变算法结构即可重写这些算法;使用该模式,可完成了SQL语句的统一执行。实际上,用策略模式和模板方法模式结合完成从数据库表记录到对象或对象集的双向映射是一种不错的实践方案。
3.3、 配合使用代理模式
在项目开发过程,往往会有一些对象不能直接引用或不适合使用另一个对象[2],这时代理对象可以作为它们的中介,这种设计的思想即为代理模式。在表现层控制器对用户请求的处理和响应,通常就可采用代理模式,因为代理模式可以解决直接访问对象时带来的问题,而要访问的对象在互联网的应用服务器上,对象创建开销大,并且很多操作还需要安全控制等。这样就可以把杂乱的用户请求统一用一个控制代理来完成,既方便又安全。
4、 结束语
实践证明,本文所阐述的单例模式与原型模式、策略者方法和模板方法模式以及代理模式在三层Web应用开发中切实有效。即设计模式若利用好设计模式,可以简化并快速设计、方便开发人员之间的通信交流、降低风险、有助于转到面向对象技术。但是如果利用不好,将会影响系统的性能。
参考文献
[1]张英杰,朱雪峰.模式驱动的软件架构设计研究综述[J].计算机科学,2018 (S2) .
[2]韩菁华.设计模式及其在软件设计中的应用[J].信息系统工程,2016 (05) .
[3]Shikha Gautam, Brijendra Singh. Assessing the Theoretical Impact of Design Patterns on Software Quality[J]. Software Quality Professional, 2018 (1) .
[4]Sandra Sanchez-Gordon, Mary Sánchez-Gordón, Murat Yilmaz, etal. O'Connor. Integration of accessibility design patterns with the software implementation process of ISO/IEC 29110[J]. Journal of Software:Evolution and Process, 2019, 31 (1) .
在高需求、高投入、高竞争的环境下, 软件生产的规模和效率成为软件企业最关注的问题之一。在传统软件开发过程中, 大多数软件代码的生产要依靠程序员人工完成, 为软件开发带来了大量问题。...
自20世纪90年代软件设计模式概念提出以来,一直受到广大软件开发者的青睐。软件设计模式共分为了3类23种,每种设计模式都有其比较合适的应用场景。但是大多数设计模式并不能得到发扬广大,得不到充分的利用。...
第一篇关于软件工程论文:《高速串口的软件设计模式研究》关键词:高速串口;设计模式。Abstract:Thehigh-speedserialcommunicationworkswithamassofdatastreams.Thebufferoverflowsinresultofreadingdelayedinsituationoftime-limite...
软件工程课程是培养学生具有计算机软件项目的分析和设计能力的核心课程。课程设计则是软件工程课程的一个重要教学环节,是对学生进行计算机软件项目的训练。...
在信息技术快速发展的今天, 许多工作领域都离不开软件设计, 软件可以大大提高人们的工作效率, 给人们带来很大的便利。...
随着中国IT行业的发展和软件市场的成熟, 人们对软件作用期望值也越来越高, 软件的质量、性能、可靠性等方面也正逐渐成为人们关注的焦点。...
软件设计模式 (Design pattern) , 也简称设计模式, 其核心内涵是对代码设计经验、软件设计难点的总结, 是一种面向对象设计中反复出现的问题的一种解决方案, 被广泛知晓, 发挥其应有的作用与价值。...
软件设计的目标是满足系统的功能性需求和质量需求(非功能性需求)。功能性需求是软件系统将要实现的功能和提供的服务,质量需求是软件产品为满足用户业务需求而必须具有且除功能性需求以外的特性。...
随着互联网技术的大量普及和网络技术的快速发展, 越来越多的互联网创业者投入到互联网建设中, Web架构软件方便部署安装、使用方便等特点受到了越来越多的创业者的青睐。...
设计模式在软件研发领域中的运用早在1995年就被提出。在无数研发者的验证下, 设计模式可以很好的解决一些特定的问题, 来提高开发软件的效率。...