论文部分内容阅读
函数式编程语言(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)通过将本文设计并实现的模块模式、发布-订阅模式和事件驱动模型应用在移动游戏项目实例中,佐证本文所设计和实现模式的优势。