基于函数式编程语言的设计模式研究

来源 :上海师范大学 | 被引量 : 0次 | 上传用户:chenshuae5b
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
函数式编程语言(Functional Programming Language,下文简称FP语言)是软件工程界的热点研究问题之一,并已在业界广泛使用。然而目前在FP项目的实际开发中,有些FP语言使用者认为设计模式的概念有缺陷,在FP项目中并不需要,同时有些FP使用者认为设计模式还是需要的,但是在具体设计和实现中仅仅是生搬硬套传统OOP的设计模式,把FP语言强制模仿成OOP语言来使用,丢失了FP语言的许多优秀特性,增加了设计模式的实现成本,从而使得OOP的设计模式在FP语言中并没用得到很好的实现和利用。本文针对以上认识误区,对FP语言的设计模式问题进行了以下主要研究:(1)提出在FP领域,传统OOP设计模式通常的三种表现形式:①模式由FP语言吸收;②模式是FP语言中独有的;③模式仍然存在于FP语言中,但是设计思路和实现细节有所不同,并可以有所改进。(2)对于第①种表现形式,研究和设计了三种模式:工厂模式、迭代器模式和命令模式。这类模式已由FP语言吸收,通过FP语言的某一特性可以很容易实现。(3)对于第②种表现形式,通过充分利用FP语言高阶函数和闭包特性,设计并实现了模块模式,该模式具有简单易用以及优良的移植性和复用性等优点。(4)对于第③种表现形式,通过改进OOP观察者模式,设计并实现了发布-订阅模式,同时设计了维护订阅信道的数据结构以及维护订阅操作码的AR算法。发布-订阅模式充分发挥了FP语言的模块化和高阶函数特性,解决了OOP观察者模式中存在的不能循环依赖、无法附带数据、过度暴露被观察者以及增删观察者动作不合理等问题,同时具有文件代码100%可复用的优势。(5)对于第③种表现形式,通过改进OOP事件驱动模型,设计并实现了基于FP语言的事件驱动模型,并将此模型提炼成一个独立的具有八个方法的文件。本文的事件驱动模型充分利用了FP语言的lambda表达式、高阶函数以及闭包等特性,解决了OOP事件驱动模型中存在的设计复杂、代码瓶颈隐患等问题,保留了传统OOP模式的优点,还具有简单易用、代码100%可复用以及扩展功能等优势。(6)通过将本文设计并实现的模块模式、发布-订阅模式和事件驱动模型应用在移动游戏项目实例中,佐证本文所设计和实现模式的优势。
其他文献
随着计算机处理能力和网络技术的不断发展,多媒体已广泛地运用到了社会生活的各个领域。同时,多媒体通信的安全问题也日益突出。密码学是解决这一问题的重要技术。与文本数据
遗传算法是广泛用于求解最优化问题的智能计算方法。由于遗传算法能有效地求解属于NPC类型的组合优化问题及非线性多模型、多目标的函数优化问题,从而得到了多学科的广泛重视
人工内分泌系统是指在研究人体内分泌系统的信息处理机制的基础上,构造出体现内分泌系统信息处理特性的一类新的计算智能模型和方法。与神经系统,免疫系统一样,内分泌系统也
在现代信息社会,图像数据成指数倍增长,对图像数据的应用已经深入到各个领域中。如何快速、高效地对图像数据进行组织、存储、表达和检索是亟待解决的课题。为了准确地表达图
随着Internet网络的迅速普及,电子商务开始逐渐兴起并得到了较大的发展,而作为电子商务核心环节之一的电子支付的研究也逐渐成为了研究热点。   目前已有的电子支付方式有:电
随着面向服务的计算(Service-Oriented Computing,SOC)与面向服务的体系架构(Service-Oriented Architecture,SOA)思想的提出,未来软件和网络发展的核心目标将是以Web服务为
GUI是用户和计算机系统交互的接口,所以,对GUI测试显得非常重要,因为GUI代码在整个应用程序中占据了越来越大的比例而且由于GUI是用户界面,图形用户界面功能的完善性和便捷性
随着Internet的发展,原先的封闭、紧耦合的计算环境逐渐转变为开放式环境,Web应用的形态也随之不断发展。近年来,一种新的面向Web的分布式应用——Web服务,代表了一种更为松散耦
工程中存在许多密集频率成分或连续频率成分的信号,比如“拍振”信号是最简单的密集频率信号,而密集频谱的频谱校正技术还很不完善,需要进一步的探讨。本文就离散密集频谱的
现代许多的信息系统是由流程模型驱动的,流程建模是系统成功运行的关键因素。流程挖掘技术旨在通过分析事件日志自动产生流程模型,从而辅助流程模型的设计与再设计。尽管目前