登陆注册
15296300000172

第172章 3 策略模式涉及的角色

小A:“它所涉及到哪些角色呢?”

大B:“策略模式中分成三种角色。抽象策略角色:通常用一个抽象类或者接口来实现,主要是定义这个算法所完成的功能。具体策略角色:包装了相关算法和行为。环境角色:持有策略类的引用。”

下面我们还是看一个小例子,很多时候看代码更能够懂得其中的意思,不是那么抽象,这个例子要实现的功能是加减乘除。

首先建立抽象策略角色:Operation。java

package org。kangta。straty;

/ *

*@author Administrator

*抽象策略角色

*

*/

public interface Operation{

public void op(double a,double b);

}

再建立具体策略角色:四个Add。java、Sub。java、Div。java、Multi。java

Add。java

package org。kangta。straty;

/ *具体策略角色

*@author Administrator

*

*/

public class Add implements Operation{

public void op(double a,double b){

//TODO Auto-generated method stub

double result=a b;

System。out。println(result);

}

}

Sub。java

package org。kangta。straty;

/ *具体策略角色

*@author Administrator

*

*/

public class Sub implements Operation{

public void op(double a,double b){

//TODO Auto-generated method stub

double result=a-b;

System。out。println(result);

}

}

Div。java

package org。kangta。straty;

/ *具体策略角色

*@author Administrator

*

*/

public class Div implements Operation{

public void op(double a,double b){

//TODO Auto-generated method stub

if(b!=0)

{

double result=a/b;

System。out。println(result);

}

else

{

System。out。println(“除0了!”);

}

}

}

Multi。java

package org。kangta。straty;

/ *具体策略角色

*@author Administrator

*

*/

public class Multi implements Operation{

public void op(double a,double b){

//TODO Auto-generated method stub

double result=a*b;

System。out。println(result);

}

}

OK!抽象策略角色和具体策略角色都已经建立成功了,现在来建立环境角色

Calc。java

package org。kangta。straty;

/ *环境角色

*@author Administrator

*

*/

public class Calc{

public final static Add add=new Add();

public final static Sub sub=new Sub();

public final static Div div=new Div();

public final static Multi multi=new Multi();

}

都建立好了测试一下

Test。java

package org。kangta。straty。test;

import org。kangta。straty。Calc;

public class Test{

/ *@param args

*/

public static void main(String[]args){

//TODO Auto-generated method stub

Calc c=new Calc();

c。add。op(11,22);

c。sub。op(22,11);

c。div。op(33,11);

c。multi。op(33,33);

}

}

测试成功

点评策略模式:

策略模式的优点:

提供管理相关算法族的办法

提供可替代继承关系的办法

避免了使用多重条件判断语句

策略模式的缺点:

客户端必须知道所有的策略类,自己去决定使用那一个

造成很策略类

同类推荐
  • 纵横于天地之间——互联网络技术

    纵横于天地之间——互联网络技术

    本书告诉你:不管你是谁,只要生活在当前的时代,你一定知道电话,知道电脑,知道上网……知道许许多多关于电子、关于计算机、关于网络的话题,这就是网络时代。网络的话题可多了:它是怎么来的?什么是“蜘蛛网”?网络的过去和现在,上网的方法,如何使用网络,互联网的安全,网络有“陷阱”吗?网络有“瘾”吗?网络文化和未来又是怎样的?到书中去找答案吧!
  • 办公软件高级应用

    办公软件高级应用

    日新月异的信息技术使计算机的应用渗透到各行各业,融入到我们的工作、学习和生活中,特别是在办公领域中运用计算机技术,可以实现办公自动化,成倍地提高工作效率。在众多的办公软件中,微软公司的Office系列软件是办公自动化软件中的佼佼者,其强大的功能深受全世界广大用户的青睐。根据当前业界的需求以及办公软件的实际应用范围,本书针对Office2003系列产品,深入讲解其高级应用知识和操作技能。
  • 计算机应用基础案例教程

    计算机应用基础案例教程

    本书是根据教育部对高等院校计算机公共基础课程的基本要求,结合计算机技术的最新发展及高职高专类院校计算机基础课程改革的最新动向编写而成。其主要内容包括计算机基础知识、WindowsXP操作系统、Word2003文字处理软件、Excel2003电子表格软件、PowerPoint2003演示文稿制作软件、计算机网络与安全及常用工具软件的使用。本书将理论知识与项目实践相结合,既对理论有较为系统全面的讲解,又通过案例突出了操作技能的培养。本书内容新颖,体系结构合理,可作为高职高专学校、成人高等学校的计算机公共基础课教材,也可以作为广大计算机爱好者的自学参考书。
  • 网络广告经纪人

    网络广告经纪人

    本书为网络广告经纪人培训认证的指定教材,该认证是商务部中国商务广告协会和信息产业部中国电子商会联合推出的,旨在为国家造就和培养出一大批网络广告梯队型人才。该教材包括网络广告经纪人的介绍和发展趋势,以及网络广告的原理、策划、设计、制作、发布与交换、效果评估、管理,以及网络广告营销的国内外最新的成功案例,还提供了一些常用的网络广告制作工具。本教材适合助理网络广告经纪人和网络广告经纪人层次使用。也可作为高校广告、电子商务等专业的教材。
  • 中文版AutoCAD2005建筑绘图精讲精学

    中文版AutoCAD2005建筑绘图精讲精学

    本书从中文版AutoCAD2005建筑绘图的基础进行介绍,讲解了建筑绘图的环境设置、二维建筑图形的绘制、二维建筑及装饰图形的编辑、建筑绘图中的文字标注和图形查询、建筑装潢平面图中的尺寸标注、建筑绘图中图块的应用、建筑平面图的绘制、建筑立面图的绘制、建筑剖面图的绘制、建筑绘图中的三维造型、三维建筑模型绘制及建筑图纸的布局与打印输出等内容。
热门推荐
  • 守护者们不同的使命

    守护者们不同的使命

    十三个不同的世界遭遇大了大规模的毁灭!十二星座与七大元素守护者们为了守护这十三世界分别去往不同的两个时空阻止恶魔,战争中导致发生时空风暴从而将所有守护者一同卷入其中不知去向!于是十二个世界分开不知去向。只剩下这唯一的世界,原本的守护者也只剩下白筱夜一人,于是圣蔷薇学院再度招生。那么又会发生什么呢?守护者们还能回归吗?世界能够找回来吗?恶魔的阴谋诡计会得逞吗?那么就来这儿一看究竟吧!欢迎加入月亮粉,群号码:482859107本群是雨澜月专属文群,喜欢的话可以进群一起讨论文,想要角色可以自己设定哦!欢迎你的加入!
  • 风雨情缘

    风雨情缘

    童年的所有不幸在一个风雨交加的夜晚真相大白,年仅十五岁的少年完全理解了老者的苦心。重现家族曾经的荣耀,让仇人付出血的代价成为了少年人生的目标。看主角如何在这个人性冷漠物质至上的社会一步步从弱小蜕变强大!
  • 世说旧注

    世说旧注

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。
  • 契约之步步惊心

    契约之步步惊心

    救母心切,为了赚钱,在夜场受尽鞭子的折磨,被一个冰冷的富少救下。没想到,这一切都是个圈套,让她套上了契约的牢笼。一纸契约,让孟月夕知道自己被跟踪了,目的是父亲的一张莫名的配方,这配方,足以要了自己和母亲的命。一纸契约,她无奈于自己的命运,失去自由和人格,改头换面成了叶家千金大小姐。一纸契约,她还要做着夏天烨内心深处的一个死去的女人的替身,永远的活在贞儿这个名字之下……三年后的一天,夏天烨冷眼望着她说:“契约期已到,从此我们形同陌路,再也不要相见!”而她,含着眼泪揪心得说:“可是,你已经走进了我的心,挥之不去!”……她终究还是忍受不了被残忍的丢弃,发疯一般的选择了夺回自己所爱,哪怕继续做一个死去人的影子,她也甘愿……
  • 未来之造神时代

    未来之造神时代

    进入了宇宙文明的人类,在不断的探索中,最终发现了一个可怕的事实。于是人类停止探索,不断的研究布局,只期望能度过这一场浩劫,让人类文明延续并升华。
  • 借阴寿

    借阴寿

    自古阳有阳寿,阴有阴寿,阴阳才得以平衡,如今阴阳平衡被破坏,是命运使然,还是有人从中作梗,且看新书,借阴寿,求打赏求书皮。。
  • 魑魅情殇

    魑魅情殇

    是什么原因让她从来没有感受到爱?是什么原因让她总是心痛,而且一次比一次严重?徐翊彬,一个第一个爱上的人,却因为穿越,处在两个不同时空。夕夜月,一个能给她温暖的人,好不容易鼓足勇气去爱的人,却被迫分开。夕夜羽,为了她做了那么多的事,能否得到她的青睐?
  • tfboys之我喜欢

    tfboys之我喜欢

    。。。。。不喜勿喷。。。。。。。。。。。
  • 风声语

    风声语

    他在茫茫大雪中从毁于一旦的房屋里拿出来了那封信,好看的眉眼在看到那以后盛满了哀伤,所有的说不爱的逞强话语在那一刻瞬间崩溃。“程立,我爱你。”……“习折,我也爱你。”可是我现在..好像找不到你了。这是一个错爱与逞强的故事,结局是虐的求你们不要打我ovo。我还是很萌的十四语!(???????)
  • 萌妹测试召唤兽

    萌妹测试召唤兽

    塞卜是什么?能吃么?欲板酶琴是什么?能弹么?c.c是什么?能喝么?梨花奏是什么?能听么?雅思纳是什么?能穿么?亚里鸭是什么?能做么?……听着系统提示,我的脑袋一阵胀痛。我爱看书,爱看报,爱看电视,爱学习,偶尔上网,从不打灰机,大家都说我是个好孩纸。直到一天,我吃了一个叫麻花腾的人给的麻花,稀里糊涂的来到了一个充满腹黑妹纸的世界,然后有一个软妹纸问我:“你就是我的召唤兽么?”我:“……”