Chinaunix首页 | 论坛 | 博客
  • 博客访问: 25058
  • 博文数量: 35
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 185
  • 用 户 组: 普通用户
  • 注册时间: 2020-06-11 14:38
文章分类
文章存档

2020年(35)

我的朋友

分类: 其他平台

2020-07-06 09:53:47

摘要:通过对软件设计模式的介绍以及工作实践中几种常用的软件设计模式的研究,给出了软件设计模式的应用场合及最佳实践,实践表明本文所阐述的单例模式与原型模式、策略者方法和模板方法模式以及代理模式在三层Web应用开发中切实有效。
 
  关键词:设计模式; 单例模式; 策略者模式; 代理模式;
 
  1 引言
 
  自20世纪90年代软件设计模式概念提出以来,一直受到广大软件开发者的青睐。软件设计模式共分为了3类23种,每种设计模式都有其比较合适的应用场景。但是大多数设计模式并不能得到发扬广大,得不到充分的利用。因此,为了更好地去宣传软件设计模式及让我们开发的软件更加健壮和可靠,本文将结合自己的软件开发实践,试图探索软件设计模式的最佳实践。
 
  2 软件设计模式介绍
 
  软件设计模式是一种为多数人知道的、能被反复使用的、并分类编目的代码设计经验的概括与总结[1].使用软件设计模式可以让人更加容易理解代码、保证代码的可靠性以及程序的复用性等。常见的软件设计模式有:创建型模式包括单例模式、原型模式、工厂方法模式、抽象工厂模式和生成器模式;结构型模式包括适配器模式、组合模式、代理模式、桥接模式、装饰模式、外观模式和享元模式;行为型模式包括策略模式、模板方法模式、职责链模式、备忘录模式、命令模式、中介者模式、解释器模式、迭代器模式、状态模式、访问者模式和观察者模式。在所有的软件设计模式中,只有工厂方法模式、适配器模式、解释器模式、模板方法模式既有类模式也有对象模式,而其它的只有对象模式。
 
  3 软件设计模式应用的最佳实践
 
  软件设计模式并不是短时间内就容易搞懂的知识,也不能说一个人会不是设计模式,因为设计模式没有绝对的对与错,只有理解的深浅不同,实践应用的合适程度不同[2].本来软件设计模式就是软件开发过程中的最佳实践之一,项目中合理地运用设计模式可以完美地解决很多问题。因此,这里将结合自己的开发经验,探索软件设计模式应用的最佳实践。
 
  3.1 结合使用单例模式与原型模式
 
  单例模式是在这整个系统开发过程中保证一个类只要一个实例,并提供一个访问它的全局访问点[3].而原型模式是用原型实例指定创建对象的实例,并且通过复制这个原型来创建新对象,即通过克隆的方式来创建对象。在设计过程中单例模式因只有一个实例,可以节省系统空间,但是因只有一个实例若在多线程并发情况下,可能会发生冲突。而原型模式,因需要时就会复制一个对象出来,会增加系统开销,但在多线程并发时,不会发送冲突。因此,在项目实践中,可以利用这两种设计模式优点,避免其缺点,达到一种较为完美的组合,形成一种最佳实践。如几乎所有的系统都要对用户信息关键信息进行加密保护,为了提高代码的可重用性和可维护性,可以采用单例模式对用户密码等信息提供保密支持。这样可以采用单例模式设计一个对信息进行加密的工具类,为系统提供一个访问它的全局访问点,以提高效率和节省空间。还有在业务逻辑层需要数据访问层某些对象的支持,这样很多地方都使用某个数据访问层的对象,这时对于这样的对象可以采用原型模式,因为原型模式是用原型实例指定创建对象的实例,并且通过复制这个原型来创建新对象,这样可以节省时间,而且效率也高。
 
  3.2 合理使用策略者模式和模板方法模式
 
  策略者模式定义一系列算法,并将每个算法封装起来,并让它们可以相互替换[4].也就是说策略模式实际上就是分开算法的定义和使用,分开算法的行为和环境,专门定义一个抽象策略类去声明算法,然后再定义具体的策略类去实现抽象策略类中的算法。这样我们使用具体的算法时是针对抽象策略编程,而不是针对实现编程,符合依赖倒置原则。因此在数据访问层的ORM中,可采用了策略者模式完成查询结果到对象或对象集的操作,这样的模式处理结果集具有通用性、规范性。模板方法模式是在抽象的父类中声明一些算法,而将这些算法的实现延迟到子类中,从而使得子类可以不改变算法结构即可重写这些算法;使用该模式,可完成了SQL语句的统一执行。实际上,用策略模式和模板方法模式结合完成从数据库表记录到对象或对象集的双向映射是一种不错的实践方案。
 
  3.3 配合使用代理模式
 
  在项目开发过程,往往会有一些对象不能直接引用或不适合使用另一个对象[2],这时代理对象可以作为它们的中介,这种设计的思想即为代理模式。在表现层控制器对用户请求的处理和响应,通常就可采用代理模式,因为代理模式可以解决直接访问对象时带来的问题,而要访问的对象在互联网的应用服务器上,对象创建开销大,并且很多操作还需要安全控制等。这样就可以把杂乱的用户请求统一用一个控制代理来完成,既方便又安全。
 
  4 结束语
 
  实践证明,本文所阐述的单例模式与原型模式、策略者方法和模板方法模式以及代理模式在三层Web应用开发中切实有效。即设计模式若利用好设计模式,可以简化并快速设计、方便开发人员之间的通信交流、降低风险、有助于转到面向对象技术。但是如果利用不好,将会影响系统的性能。

阅读(308) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~