欢迎来到天天文库
浏览记录
ID:6137197
大小:1.01 MB
页数:12页
时间:2018-01-04
《软件工程strategy策略模式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、strategy策略行为型设计模式摘要:Strategy是属于设计模式中对象行为型模式,主要定义一系列的算法,把这些算法一个个封装成单独的类,并且使这些类可以相互替换,以达到能够使得算法的变化可独立于使用它的客户的目的。关键字:设计模式,定义算法,封装引言:Strategy应用比较广泛,比如,公司经营业务变化图,可能有两种实现方式,一种是线条曲线,另一种是框图(bar),这两种算法可以使用Strategy实现。还有一些使用如:Context,印刷图书,Strategy,使用某种技术的印刷设备,Algorithem,具体的印刷技术,如喷墨,胶印,I
2、Strategy,印刷正文:行为型模式:1.职责链模式ChainofResponsibility2.命令模式Command3.解释器模式Interpreter4.迭代器模式Iterator5.中介者模式Mediator6.备忘录模式Memento7.观察者模式Observer8.状态模式State9.策略模式Strategy10.模板方法模式TemplateMethod11.访问者模式Visitor 1.职责链模式ChainofResponsibility 职责链模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦
3、合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 “击鼓传球”游戏就是职责链模式的一种应用,鼓起,球从人手中传递,鼓落,拿球的人要做某件事。命令模式Command 命令模式将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;可以对请求排队或记录请求日志,以及支持可撤销的操作。命令模式是对“行为的请求者”和“行为的实现者”进行了解耦。Invoker对象可以在不同的时刻指定、排列、执行操作,支持取消、重做的操作,支持事务,记录操作的日志. 解释器模式Interpr
4、eter 解释器模式,给定一个语言,定义它的问法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 一个特定类型的复杂问题频繁出现,这时我们可以用解释器模式将负责对象表述为一个简单的对象,再进行处理。正则表达式就是一个非常好的例子。 迭代器模式Iterator 迭代器模式提供了一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示。当我们需要对聚集有多种方式遍历时,可以考虑用迭代器模式。迭代器模式提供“开始、下一个、是否结束、当前哪一项…”等统一的接口。 迭代器模式
5、分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露内部结构,又可以让外部代码透明底访问集合内部的数据。松散了耦合性,做到了信息隐蔽。 比如老师向班长要一个学生花名册,班长可以按学号进行排列,也可以按姓名首字母进行排列,只要包括了全部学生就行了。 中介者模式Mediator 中介者模式用一个中介对象来封装一系列的对象交互。中介者是各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介者模式,将多个对象之间的多对多的关系转变为了一对一的关系。对象间的相互通信,都需要
6、通过中介者对象来完成,一个对象的增加和移除,不影响其他对象,这样就降低了他们之间的耦合。 备忘录模式Memeton 备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态了。 观察者模式Observer 观察者模式定义了对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都会得到通知,并被自动更新, 系统中有两个方面,其中一个方面依赖与另一个方面,我们把这两个方面抽象,是各自可以独立的变化和复用。
7、 就像我们现在所用到的分层,不就是一层层的依赖么?还有系统组件升级,系统功能也跟着变化,这也属于观察者模式。状态模式State 状态模式允许一个对象在其内部状态改变时改变它的行为,让对象看起来似乎修改了它的类。 状态模式就是把系统的多个状态分割开来,分布到State的子类中,消除了庞大的分支语句,减少了耦合,同时也很容易增加新的状态的和转换。 这就相当于一个Schedule或SchoolTimetable一样,时间的改变,我们的行程或课程也随之改变。策略模式Strategy 策略模式定义一系列的算
8、法,把它们一个个封装起来,并且使它们可以相互替换。本模式使得算法的变化不会影响到使用算法的客户。 策略模式将每一个算法封装到
此文档下载收益归作者所有