登陆注册
8183300000172

第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);

}

}

测试成功

点评策略模式:

策略模式的优点:

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

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

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

策略模式的缺点:

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

造成很策略类

同类推荐
  • 条形码技术与应用

    条形码技术与应用

    条形码是一种可供电子仪器自动识别的标准符号,是由一组黑白相间、粗细不同的条、空符号按一定编码规则排列组成的标记,用以表示一定的信息,确认某个物体或规定它的移动,能正确快速地为产、供、销各环节在采集、处理和交换信息时提供标识。
  • 我看电商

    我看电商

    本书是作者近30年从事零售及电子商务管理的总结和分享。近年来电商行业在中国迅猛发展,2012年网络零售市场规模达到13,000亿人民币,诞生了淘宝、天猫、京东、当当、凡客、唯品会……等一大批全新的网络公司,电子商务正在日益深入的影响着越来越多人的生活。如今这位自称跨界老兵的电商操盘手第一次全方位剖析电商风云,细说中美电子商务发展的不同路径,评点国内各大电商企业的是是非非,详解其中的融资、模式、运营、效率……个中经验,毫无保留的娓娓道来,笔触至深,让人不禁掩卷沉思。
  • FlashCS动画制作基础

    FlashCS动画制作基础

    适合爱好flash动画制作的初、中级读者作为入门学习的参考书,还可以供从事网页制作与动画设计的人员参考,同时也可以作为初、中级电脑短训班的培训教材,对有一定经验的flashcs5使用者也有很高的参考价值。
  • 办公设备使用与维护

    办公设备使用与维护

    信息技术的发展正前所未有地改变着人类生活的每一个层面,以信息化、全球化和高科技为特征的新经济浪潮滚滚而来,机遇与挑战并存。办公自动化是信息化时代最重要的标志之一,办公要实现自动化,当然离不开办公设备。
  • 三维动画审美谈

    三维动画审美谈

    数字时代,美的标准充满更多的不确定性。而三维动画以数字图像形式成为这个图时代的代表。三维动画及三维图像不仅仅是由于应用了仿真数字图像技术而带来的虚拟空间,还有更多的是由三维图像技术所引发或引导的被扩展的图像技术,这些技术无不应用在现代视觉设计领域的各个方面,并且,由此引起社会的追热,引起审美观念的改变。这些改变是在进行中的,变化中的,也是在发展中的。对于未知的美,我们做的只是追寻和记录,我们不知道以后的美将会是什么样,尽管我们苦苦追寻,孜孜探讨,同时也在默默审视。我们在追寻中享受美,在探讨中认知美,在审视中体验美……
热门推荐
  • 仙界佳人

    仙界佳人

    转世的仙灵,妖异的印记,神秘的魔灵,众强林立的世界,她能否重回巅峰?
  • 快穿之大佬套路深

    快穿之大佬套路深

    “阿锦,我来接你回家了。”他等了她上千年的时光,如今,终是让他等到了。“你是谁?我们以前认识吗?”她不记得他了,可那又如何。三千世界,她在哪里,他便去哪。在经历一个又一个的小世界之后,零碎的记忆渐渐补全。然而隐藏在暗处的危机,也逐渐靠近。“阿锦,你终于忆起我了吗?”“小韶儿,我回来了。”
  • 王者荣耀之上古神兵

    王者荣耀之上古神兵

    高中生意外觉醒异能,可以穿越到王者荣耀世界,最后在交流时找到了,中国十大神器,用昆仑镜穿越到了未来,与朋友们一起改变了自己的未来
  • 屠神弑仙

    屠神弑仙

    马踏长空山河碎,剑指风云啸苍穹;长生不朽逆岁月万古不灭弑神魔。看少年仗剑天涯一路腥风血雨屠神弑仙……
  • 唐门弟子在异界

    唐门弟子在异界

    千年唐门仅存的亲传弟子,一次任务中被阴谋算计不幸身死,所幸其灵魂在异世界重生,在一个剑与魔法,武侠与骑士并存的全新世界里,他将再现绝世唐门的荣光!
  • 我的英雄是不死的

    我的英雄是不死的

    一场突如其来的车祸,让社畜李昂来到无限的世界。为了活下去,他开始无尽的轮回与冒险!漫威、哈利波特、变形金刚、终结者、星球大战、Fate、海贼王、火影、JOJO的奇妙冒险……原本是正常的无限流冒险,但是当他开局救下一个必死的剧情人物后,画风就彻底变了!从此之后,他发现了一个巨大的bug,每天最让他头疼的只有一件事:今天我要复活谁呢?……“我的黑魔法才是真正的恐怖!”伏地魔叫嚣道。“切,你感受过原力的黑暗面吗?”黑武士的语气不屑。邓布利多一脸无奈的表情,“你们两个能不能消停一会?”“再来一碗!”阿尔托莉雅手里拿着一个空的饭碗说道。“烤串马上就好了!”艾斯一手握着一把羊肉串,一手燃烧着烈焰。钢铁侠、洛基和黑寡妇围坐在麻将桌前,“三缺一,李昂你来不来。”“不来不来。”李昂摆了摆手,亚古兽坐在他的肩膀上,他大步朝下一个无限世界走去。“我要去救人了!”(我的英雄是不死的聊天群:750271399)
  • 遇见你洋光郑好

    遇见你洋光郑好

    遇见你的那一天,阳光正好。喜欢你偶尔的自言自语,喜欢你的故作坚强,喜欢你的所有小毛病。你的自卑,我将会为你打破,你曾经沉寂黑暗的时光,将由我为你点灯。别怕,一切有我。那么,你同意我喜欢你了吗?『同人文,原创,和现实无关,不喜勿进,本故事纯属虚构,如有雷同,就是你抄我』
  • 习武修神

    习武修神

    平凡的少年,却因为不平凡的遭遇,开始了属于他的习武修神之路。且看他是如何由默默无名到名扬天下。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 逍遥旅

    逍遥旅

    他拥有千亿修真者羡慕的先天五行之体,他拥有狂怒而能量激增的特殊体质,他还拥有重伤后能量大增的怪异的身体,他难道只是一个普通的较强悍的修行者而已吗,他的真正的身份连他身为神界五大巨头之一师尊都探不清楚。他的真正的身份是什么呢?他的任务将会是什么?这一切都不从而知,只能靠他本人一步步的去探索。没有最豪华的打斗场面,只有更豪华的打斗场面,请您细细品来!