登陆注册
15296300000158

第158章 10 模板方法模式与策略模式

小A:“模板方法模式与策略模式有什么不同?”

大B:“模板方法模式与策略模式的作用相常类似。有时可以用策略模式替代模板方法模式。模板方法模式通过继承来实现代码复用,策略模式使用委托,委托比继承具有更大的灵活性。继承经常被错误的使用。策略模式把不确定的行为集中到一个接口中,并在主类委托这个接口。”

思考刚才的订单处理例子,改为策略模式后。

1、把不确定的行为抽取为一个接口。

代码:

Public interface OrderHelper{

public int getOrderItemPrice(OrderItem orderItem);

public int getSpendingLimit(int customerId);

public int saveOrder(int customerId,int total,List orderItemList);

}

rendercode();

2、而把这个具体类调用这个接口的相应方法来实现具体的逻辑。

代码:

public class Order{

private OrderHelper orderHelpr;

public void setOrderHelper(OrderHelper orderHelper){

this。orderHelper=orderHelper;

}

public Order placeOrder(int customerId,List orderItemList){

int total=0;

for(int i=0;iorderHelpr。getSpendingLimit(customerId)){

throw new BusinessException(“超出信用额度” orderHelpr。getSpendingLimit(customerId));

}

int orderId=orderHelpr。saveOrder(customerId,total,orderItemList);

return new OrderImpl(orderId,total);

}

}

rendercode();

大B:“这样Order类不再是一个抽象类,而是一个具体类。Order类委托OrderHelpher接口来完成placeOrder方法所需的基本操作。像在这种情况下使用策略模式更具有优势,策略模式不需要继承来实现。而是通过一个委托对象来实现。OrderHelper接口无需要去继续任何指定的类。而相对来说,采用策略来实现会更复杂一些。由此可见,模板方法模式主要应用于框架设计中,以确保基类控制处理流程的逻辑顺序(如框架的初始化)。像上面的测试基类中。框架通常需要控制反转。而在一些情况中,优级先考虑使用策略模式:当需要变化的操作非常多时,采用策略模式把这些操作抽取到一个接口。当那些基本操作的实现需要与其它类相关时,应该使用策略模式。通过委托接口把行为与实现完全分离出来(比如数据存取)。比如订单处理的saveOrder方法,是写入数据库的。它的实现与采用何种持久化模式相关。当某些基本操作的实现可能需要在运行时改变时,可以通过在运行时改变委托对象来实现,而继承则不能。所以才采用策略模式。”

同类推荐
  • 体感交互技术

    体感交互技术

    本书提出了体感计算的研究,探讨了基于体验性认知的个性化电子学习方式,并且分析了面向儿童的艺术创造体验,在体感虚拟化身的帮助下,用户可以通过身体运动,促进情感心智的全面发展,
  • 如何处理电脑故障

    如何处理电脑故障

    本书以问答的方式介绍了电脑会出现的各种故障,内容包括了音箱声音失真,如何处理?如何做好电脑的日常维护等等问题。
  • 组态软件控制技术

    组态软件控制技术

    监控组态软件是完成数据采集与过程控制的专用软件,它以计算机为基本工具,为实施数据采集、过程监控、生产控制提供了基础平台和开发环境。本书从应用角度出发,详细介绍了组态软件应用程序的开发过程。对窗口界面编辑、动画链接、实时和历史趋势、安全机制、I/O设备连接,以及生产应用等内容都做了非常详细的介绍。MCGS是优秀的监控组态软件之一,它功能强大、使用方便,可以非常容易地实现监视、控制、管理的各项功能,并可提供软、硬件的全部接口,方便、快速地进行系统集成,构成不同需求的数据采集与监控系统。本书可作为高等学校计算机应用、自动控制、电子技术、机电技术专业的教材,同时还可作为相关专业工程技术人员的自学用书。
  • 不懂PowerPoint就当不好经理

    不懂PowerPoint就当不好经理

    经理人如何用PowerPoint,来规划部门的发展,如何用PowerPoint来表达自己的经营主张?本书为各类经理人提供了从入门到提高,从原理到实战的一系列知识,相信本书将让演示文稿为经理人的管理效能加分!
  • 互联网创业前奏曲(第二部)——网站运营之人性、策略与实战

    互联网创业前奏曲(第二部)——网站运营之人性、策略与实战

    本书是《互联网创业前奏曲》系列的第二本书,是作者多年互联网实践经验和业界观察的总结,是国内罕有的关于互联网网站运营和用户心理结合的书籍,用通俗的语言阐述互联网运营背后的人性驱动。你想互联网创业吗?你是否在为找不到好的互联网运营策略和方法而发愁?你非常想了解互联网行业?你是否在为自己不了解互联网运营而苦恼?本书针对这些问题列举了很多互联网运营的案例,帮你制定运营策略,更好的修炼和提升运营功力。
热门推荐
  • 邪魅男神的秘密:呆萌甜心妻

    邪魅男神的秘密:呆萌甜心妻

    “先生,不好了,太太把楼上的所有古董都给打碎了?”“她伤着没?”……“先生,不好了,太太把厨房给点着了?”“她伤着没?”……“先生,不好了,太太……”“她伤着没?”这就是莫寒,一个把他的她爱到了心里,宠到了骨子里,一心只想着她爱着的她,不舍得她受到一点点的伤害的人。看到她的时候,想她,看不到的时候更想她。想她,从很早很早的时候就已经变成了他的嗜好……而莫寒的这个她,也是从来都没有想到,一直都呆在自己身边,这个她一直以为的人,会成为她生命中的无可替代……
  • 白夜繁花

    白夜繁花

    【声明:本文虽然版面是VIP,但是全文免费,已完结】地府的天常阴月常明,一介游魂白小三扎根于此,种桃品茶,小日子过的颇为滋润。直至眠了三百来年的那一位悠悠转醒。如此这般,峰回路转。白小三恍然,原来自己与那一位之间,拴着一根粗壮的红线。碗大的疙瘩,难解的死结。还是那个阴凉天,还是那个半芽月,百年的老桃树下,还是那个花枝招展的白小三。挥一挥风流扇,眨一眨桃花眼。前尘缘,未果情,隔了百年,至如今,结局又如何?(煤球文案无能,故事说的啥,还请各位看官自己瞧罢)本文11,请不喜者~慎入!PS.本文小群88184490,闲聊潜水皆可~
  • 惹上戴面具的撒旦
  • 疯狂的青春时代

    疯狂的青春时代

    这是一部发生在大学时期的恋爱,里面有许多的爱恨情仇,也有背叛和离别,快来看一看吧!
  • 恶魔万人迷

    恶魔万人迷

    刑立威含着金汤匙出生,家世富裕,要什么有什么。他既是“海威公司”的接班人,容貌又出众,气质清朗俊雅、自信果决,像是白马王子的化身。几乎所有令人欣羡的事,都在他的身上实现了;但是,这种毫无挑战、一帆风顺的生活,他已经腻了,他想要体会不一样的人生!或许是老天爷听见他的心声,帮他实现愿望,他果然遇上一个奇妙的女孩──欧小筝。这位欧小姐很有个性,不把王子般的他放在眼里,却可以为了捡到一枚五十元铜板而欣喜若狂;他不是个爱笑的人,但她总是能令他笑、让他开心。跟她在一起就像坐上云霄飞车一样新鲜、刺激,他有预感,她会为他的“新生活”带来无限乐趣──
  • 四年之后又遇见你

    四年之后又遇见你

    闰二月之约,没有遇见约定的人,却遇见了命定的人。一个被十年前的变故洗刷了灵魂。一个却是十年初见,便不曾忘却。一个成了“X”,人皆草木。一个苦苦单恋,只盼还能相遇。同样腹黑却敏感的两个人,是否真能简单的happyending?第一部分很快就要完结了,小结局会很烧脑哈哈哈
  • 佛说一切佛摄相应大教王经圣观自在菩萨念诵仪轨

    佛说一切佛摄相应大教王经圣观自在菩萨念诵仪轨

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。
  • 一切有别无爱无解

    一切有别无爱无解

    此生无你,活着只是一场梦镜,此生有你,活着也是一场风雨。然而更著风和雨,寂寞开无主。只为香如故,零落成泥碾作尘。爱终究给了他们什么太多.......几许......
  • 鹿晗,可以爱吗

    鹿晗,可以爱吗

    鹿晗,前生我不爱你,今生我不知如何爱你,下世可以真正的爱你!
  • 极品至强保镖

    极品至强保镖

    白天,他是公司人见人爱,花见花开的保洁员。黑夜,他是令无数纨绔少爷、黑道枭雄都心颤、闻风丧胆的极品保镖!