程序设计模式之策略模式课程设计

程序设计模式之策略模式课程设计

ID:41569045

大小:70.25 KB

页数:16页

时间:2019-08-28

程序设计模式之策略模式课程设计_第1页
程序设计模式之策略模式课程设计_第2页
程序设计模式之策略模式课程设计_第3页
程序设计模式之策略模式课程设计_第4页
程序设计模式之策略模式课程设计_第5页
资源描述:

《程序设计模式之策略模式课程设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、河南理工大学《程序设计模式》结课论文2012—20013学年第2学期论文题目策略模式学生姓名学号专业班级指导教师题目1・Strategy模式概述摘要:设计模式是一种高级软件重用技术,即在软件开发过程中,在特定环境下解决问题的方法。使用设计模式可以更加简便的重用成功的设计和已有的体系结构。本文以一个简单的例子介绍了策略模式,并给出了策略模式的java实现。在生活中,我们经常需要就执行某项任务或解决某个问题的一般方法做出抉择,这种情况在软件开发中也屡见不鲜,我们大多数人都已经了解到,短期的抄近路,可能会在长期导致问题严重复杂化,在软件开发中也常常遇到类似的情况,实现某一个功能有

2、多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(HardCoding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当然也可以将这些查找算法封装在一个统一的方法中,通过if・・・else…或者case等条件判断语句来进行选择。这两种实现方法我们都可以称之为硬编码,如果需要增加…种新的查找算法,需要修改封装算法类的源代码;更换查找算法,也需要修改客户端调用代码。在这个算法类中封装了大量查找算法,该类代码将较复杂,维护较为困难。如

3、果我们将这些策略包含在客户端,这种做法更不可取,将导致客户端程序庞大而且难以维护,如果存在大量可供选择的算法时问题将变得更加严重。2.Strategy模式的定义策略模式是一种行为模式。定义一系列的算法,把他们一个个封装起来,并且使他们可以相互替换,并对用户提供统一的接口,策略模式使算法可独立于使用它的客户而变化。(Defineafamilyofalgorithms,encapsulateeachone,andmaketheminterchangeable.Strategyletsthealgorithmvaryindependentlyfromclientsthatusei

4、t.)策略模式把对象木身和运算规则区分开来,其功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程的多形性的思想。策略模式的功能:把具体的算法实现从具体的业务处理中独立出来来,把它们实现成单独的算法类,从而形成一系列的算法,并让这些算法可以相互替换。策略模式的重心不是如何实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活,具有更好的可维护性和可扩展性策略算法在实现上也是相互独立的,相互之间相互没有依赖的。3.Strategy模式的结构和使用3.1策略模式的结构▼ContextaStrategyContextinterfaceStrategyAlgorthmi

5、nterface()AConcreteStrategyAAlgorthminterface()ConcreteStrategybAlgorthminterface()ConcreteStrategycAlgorthminterface()图:模式的通用结构图策略模式的结构图如上所示:Context定义了一个面向应用的接口。它维护对一个Strategy对象的引用,并使用一个ConcreteStrategy对象来配置本身。Strategy定义所有的的算法的公共接口,Context使用此接口来调用具体的算法(策略)。具体算法在ConcreteStrategy中实现。这里每一种算法

6、即为一个策略。当客户调用Context时,它将客户的请求转发给它的Strategy。Context将该算法所需的所有数据传递给Strategy,或者将自身作为参数传递给Strategy,使Strategy可以回调Context。ConcreteStrategy实现具体算法。3.2Strategy模式以以下几条原则为基础:(1)对象都具有职责,这些职责不同的具体实现是通过多态的使用完成的。(2)概念上相同的算法具有多个不同的实现,需要进行管理。将问题域中的各个行为互相分离开来-…也就是说将他们解耦,是一个好的设计实践,这使得我们可以修改负责某一行为的类,不会对其它的类产生不良

7、影响3.3Strategy模式关键特征A•意图:可以根据所处的上下文,使用不同的的业务规则或算法;问题:对所需算法的选择取决于发出请求的客户或者要处理的数据,如果只有一些不会变化的算法,就不需要Strategy模式;B.解决方案:将对算法的选择和算法的实现相分离。允许根据上下文进行选择;C.参与者与写作者:Strategy模式制定了如何使用不同的算法,各ConcreteStrategy实现了这些不同个算法,Context通过类型Strategy的引用时用具体的ConcreteStrategy,Strategy与Co

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。